2016-04-18 11 views
0

2人のプレイヤーと20人のスティックがいるシンプルなゲームを作っています。各プレイヤーは1〜3個のスティックを選ぶことができ、プレイヤーが最後にスティックを選ぶとゲームが失われます。なぜpythonで `input`が表示されませんか?

def stix(num): 
    for _ in range(5): print('| '* num) 
    print 
stix(20) 
game_over = 0 
while game_over !=0: 
    players={} 
    for i in range(2): 
     players[i] = int(input('Player %d: Please pick stick(s) up to 3' %i)) 
     if players > 3 or players<0: 
      print('Please pick between 1 - 3 stick(s)') 
     else: 
      stix-=players 
      if stix <= 0: 
       print('Player[i] lost') 
       break 
      else: 
       print('There is %d stick(s) left' %stix) 
       print(stix-players[i]) 

したがって、機能stixは20個のスティックを示しています。それはplease pick stick(s) up to 3と聞かない。私はここで何を欠場したのですか?

私は事前にはPython 2.6

感謝を使用しています*!あなたは全くwhileループに入ることはありませんしている

+1

@ErikGodard何も問題ありません。 – njzk2

+0

@ErikGodard - Python 2で行われていることは、グループ化を示しています。この特殊なケースでは違いはありません。 – TigerhawkT3

+0

@ErikGodardは重要ですか?実際に私はそれと似ている同様のコードを持っています。私が間違っていたら、教えてください。 – jaykodeveloper

答えて

3

game_over = 0 
while game_over !=0: # Evaluated to false the first time so it's skipped. 
    # code 

ので誤差は、この場合には、input()

+1

「ゼロに設定してからブロックがゼロでないときにブロックを入力するだけなので、実行されません」などの説明を追加するとよいでしょう。 – TigerhawkT3

+0

私はgame_over == 0: 'の間にゲームオーバーが発生するまで実行したくないので、それを作っていますか? – user161778

+0

ループの中で何が起こっているかを考えれば、私はむしろそれを全く動かしていないでしょう... – Dleep

0

とは何の関係もありませんあなたの中の場合は、「game_overはない」ということです私はあなたが何をしたいと思う、それは0

に設定します真上0に等しいが、行は次のようになります。

game_over = True 
while not game_over: 
    ... 
0

あなたの問題は、あなたのwhileループがgame_overがない間に実行しようとしているが、前の行に、あなたはgame_overしたがって

game_over = 0 
while game_over !=0: 
    ... 

0に、1からgame_over、そしてあなたのコードを変更していることです働くでしょう!

def stix(num): 
    for _ in range(5): print('| '* num) 
    print 
stix(20) 
game_over = 1 
while game_over !=0: 
    players={} 
    for i in range(2): 
     players[i] = int(input('Player %d: Please pick stick(s) up to 3' %i)) 
     if players > 3 or players<0: 
      print('Please pick between 1 - 3 stick(s)') 
     else: 
      stix-=players 
      if stix <= 0: 
       print('Player[i] lost') 
       break 
      else: 
       print('There is %d stick(s) left' %stix) 
       print(stix-players[i]) 
+1

実際には、彼は決してループ内で 'game_over'を使用しません。代わりに、プレーヤーが失った場合、彼はループから外れます。だから、真実はもっと意味があると思います。 – Dleep

関連する問題