前提・実現したいこと
pythonでランダム数字を用いて「席替え」を作っています。ランダム数字の範囲a,bは、コードとして載せていませんが、入力ボックスnum1,num2から得ます。お友達の名前なので伏せていますが、「name」というリストに出席番号順に、名前が入っています。ランダムで出た数字をリストと照らし合わせて、出席番号と名前をラベルとして表示します。それぞれの席に「抽選」ボタンを置いて、席1つ1つランダムの数字を出したいです。
同じ人を二回出さない(表示しない)ために、「S」というランダムの数字を格納するリストがあります。そして、既にランダムで出された数字がSというリストにあれば、ラベルを表示させないようにしたいです。もしくは、初めから重複のないランダム数字を出せるようにしたいです。
どちらでもいいので、案をください。何卒宜しくお願い致します。
発生している問題・エラーメッセージ
「試したこと」にある、付け足した部分について、ランダムで出された数字は全て「A」という変数なので、何もラベルが表示されませんでした。
該当のソースコード
python
1name = ["","Aさん","Bさん","Cさん"] 2S = [] 3def btn_click(): 4 a = int(num1.get()) 5 b = int(num2.get()) 6 A = random.randint(a,b) 7 if A == 1 or A == 4 or A == 6 or A == 8 or A == 9 or A == 12 or A == 13 or A == 14 or A == 17 or A == 18 or A == 20 or A == 21 or A == 24 or A == 29 or A == 31 or A == 32 or A == 33 or A == 34 or A == 35 or A ==38: 8 S.append(A) 9 result = tkinter.Label(text=str(A)+name[A],bg="white",fg = "DodgerBlue") 10 result.place(x=320,y=300)
試したこと
python
1name = ["","Aさん","Bさん","Cさん"] 2S = [] 3def btn_click(): 4 a = int(num1.get()) 5 b = int(num2.get()) 6 A = random.randint(a,b) 7 #男女によってフォントの色を変えるために条件分岐をしています。ここの部分は男子の出席番号です。女子はelseで処理しようと考えてます。 8 if A == 1 or A == 4 or A == 6 or A == 8 or A == 9 or A == 12 or A == 13 or A == 14 or A == 17 or A == 18 or A == 20 or A == 21 or A == 24 or A == 29 or A == 31 or A == 32 or A == 33 or A == 34 or A == 35 or A ==38: 9 S.append(A) 10 result = tkinter.Label(text=str(A)+name[A],bg="white",fg = "DodgerBlue") 11 result.place(x=320,y=300) 12 print(S) 13 #↓ここを付け足しました↓ 14 if A==A in S: 15 result.destroy()
補足情報(FW/ツールのバージョンなど)
Windows10
python3.8.5
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/20 07:04