LoginSignup
1

More than 3 years have passed since last update.

宴会の幹事決めプログラム(イカサマもできますがやらないでくださいね)

Last updated at Posted at 2019-04-12

1. 要約

 宴会の幹事決めるのって難しくない?先輩に任せっきりもアレだし,後輩に押し付けるのもアレだし...そんなお悩みを持つあなたのために,宴会の幹事をランダムに決定するプログラムを書きました.これで誰が選ばれても「仕方がないナァ~~~」という空気になります.

2.核となるのはrandomモジュールのchoice()

 pythonには強力なライブラリがあります.今回はrandom.choice()という関数を利用して,幹事候補者のリストの中から一名をランダムに決定するという処理を行います.aをリストとすると,random.choice(a)はリストの要素を一つランダムに選択する関数です.そのため,幹事候補者のリストを作成することが必要となります.今回作成したプログラムは以下のステップで構成されています(フローチャート?そんなもん知らねぇ!!).

  • step 1. 候補者の人数を入力
  • step 2. 候補者を一人ずつリストに格納
  • step 3. 候補者リストを表示して間違い,抜け漏れがないか確認を取る
  • step 4. random.choice()で候補者リストから一人選択し,画面に表示する

以上の動作に,ユーザーからの入力が正しいかどうかの判定を加えたのが今回のプログラムです.

3.幹事決めプログラム

いつものように,ターミナルやコマンドプロンプトで実行するプログラムです.

python, kanji_gime.py
# -*- coding: utf-8  -*- 
import random

"""
input
    n: number of candidate of KANJI
    name: name of candidates
output
    kanji: KANJI
"""
ans = 0

while True:
    n = float(input(u"幹事候補者の人数を入れてください(int)->  "))
    if n < 0 or n.is_integer() == False:
        print(u"\nnには正整数入れてや\n")
        continue
    elif n.is_integer():
        n = int(n)
        break
while True:
    if ans == "y":
        break
    name_list = []
    for i in range(n):
        print("%d人目" % (i+1))
        name_list.append(input(u"候補者の名前を入力してください: "))
    print(name_list)
    while True:
        ans = input(u"\n候補者リストはこれ↑で合っていますか?(y/n): ")
        if ans == 'y':
            break
        elif ans == 'n':
            print(u"やり直しやで~~~")
            break
        else:
            print(u"y(yes)かn(no)で答えてちょっ!!!")

kanji = random.choice(name_list)
print(u"\n今回の幹事は",kanji,"さんです")

(でもnの入力が数値以外だとエラーが出て止まります.直せる方は直して使ってください.)
乱数固定するとイカサマできます.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1