- 締切済み
pythonで次のようなプログラムを作りたいのですがうまくいきません。
pythonで次のようなプログラムを作りたいのですがうまくいきません。 アドバイスお願いします。 1.ゲーム開始時のユーザの手持ちのコインの枚数を10枚とする。手持ちのコインの枚数を画面に表示。 2.以下while文を使い、無限ループさせる。 3.コインを1枚入れて、スロットマシンを動かす。具体的には、手持ちのコインの枚数を1だけ減らし、さらに、0~9までの乱数を3つ作成し、画面に表示。 4.3の数が3つとも同じ場合はコインを100枚獲得。2つの場合はコインを10枚獲得。 5.現在の手持ちのコインの枚数を画面に表示し、ゲームを継続するかどうか尋ねる。 実行結果の例: your coin: 10 Coin Slot -> 960 残念! your coin: 9 insert coin(Y/N)?- Y Coin Slot -> 110 10コイン、ゲット! your coin: 18 insert coin(Y/N)?- Y Coin Slot -> 872 残念! your coin: 17 insert coin(Y/N)?- N See You Again! your coin: 17 Done! と、いう感じです。 無茶苦茶だと思うので、いろいろと細かい指摘をお願いします。 #coding:sjis #program name:coin_slot.py import random coin=10 print "your_coin",coin print while True: coin=coin-1 num1=random.randint(0,9) num2=random.randint(0,9) num3=random.randint(0,9) print "Coin Slot -> ",num1,num2,num3 if num1!=num2!=num3: print "残念!" elif num1==num2 or num2==num3 or num3==num1: print "10コイン、ゲット!" coin=coin+10 elif num1==num2==num3: print "100コイン、ゲット!" coin=coin+100 print "your_coin",coin print answer=input("insert coin(Y/N)?-") if answer==Y: continue elif answer==N: print "See You Again!" break raw_input("Done!")
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
ここって、複数のスペースが一つにまとまる、という、Pythonにとっては致命的な仕様があるので、別な文字や全角スペースを使うとかで字下げしましょう > if num1!=num2!=num3: こう書くと、Pyhton では num1!=num2 and num2 != num3 と解釈します。 なので、例えば num1,num2,num3=1,2,1 の時は num1 !=num 2 → 1 != 2 → True num2 !=num 3 → 2 != 1 → True True and True → True となります。1,2,1はコイン10枚の役なのにはずれになります。 > elif num1==num2 or num2==num3 or num3==num1: > elif num1==num2==num3: num1==num2==num3も同様に num1==num2 and num2==num3 です。これが成立つことと全て同じ値というのは同値なので、条件はこれでよいのですが num1==num2 and num2==num3 ならば num1==num2 or num2==num3 が成り立ちます。つまり、10枚の役を先に判定すると、100枚の役も10枚の役と判定されます。 以上を考えて if num1==num2==num3: # 100枚 elif num1==num2 or num2==num3 or num3==num1: # 10枚 else: #それ以外はハズレ と判定すれば期待通りになるはずです。 > answer=input("insert coin(Y/N)?-") > if answer==Y: > continue > elif answer==N: > print "See You Again!" > break ・Y,Nが定義されていないようですが。 文字列のY/Nを入力するなら、判定も文字列でないと。 if answer=='Y' or answer=='y': Python 2.Xなら raw_input()を使用します。 Python3.xではこのままでいいです。 # 詳細はPython inputで検索してみてください。 # Python2.xのinputはあまり勧められません あと、YでもNでもない値だとY扱いになりますが、それは仕様ですか?