Edited at

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


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の入力が数値以外だとエラーが出て止まります.直せる方は直して使ってください.)

乱数固定するとイカサマできます.