2017-09-30 16 views
0
def random(): 
x_val = randint(1,100) 
limit = [] 
limit2 = len(limit) 
while True: 
    try: 
     roll = int(raw_input("Please pick a number: ")) 
    except ValueError: 
     print "Please input numbers only" 
     continue 
    if limit2 <= 5: 
     if roll > 100 or roll < 1: 
      print "Exceed Limited Guess" 
      continue 
     elif roll < x_val: 
      limit.append(1) 
      sleep(1) 
      print "Your guess is lower!" 
      continue 
     elif roll > x_val: 
      limit.append(1) 
      sleep(1) 
      print "Your guess is higher!" 
      continue 
     elif roll == x_val: 
      print limit2 
      return "You guessed correct! You win!" 
      break 
     else: 
      print "Incorrect Input" 
      continue 
    elif limit2 > 5: 
     return "You guessed over 5 times. You lose, sucker..." 
     break 
    elif limit2 == 4: 
     print "Last guess!" 
     continue  
print "Welcome to my world! You will have to pick a correct number from 1 to 100!  
If you can do it within 5 times you win! Otherwise you suck!" 
while True: 
    try: 
     start = raw_input("Start Rolling? Yes or No: ").lower() 
    except ValueError: 
     print "Answer Yes or no" 
     continue 
    if start == "y" or start == "yes" or start == "ye": 
     user2 = random() 
     print user2 
    elif start == "n" or start == "no" or start == "noo": 
     print "Ready when you are" 
     continue 
    else: 
     print "Answer Yes or No" 
     continue  

こんにちはでwhileループで入力を制限するために、リスト機能を使用しようとすると、私は自分自身と研究を行うことにより、ゼロから構築された1-100から推測ゲームに取り組んでいます、私の元のコードですこれにも近くない。 これで、リストを使用してwhileループの入力を制限することができない最後の部分が詰まっています。私は5つの推測の後にゲームを止めたい。しかし、常にそれが常に進み、勝利したらlimit2変数に "0"が表示されます。は私の推測ゲーム

はあなたのコードの主な問題は、ユーザーによって行われた試みた試行の「カウンタ」を更新したことがないということであるあなたに

+2

インデントを修正してください。 – schwobaseggl

+2

'random'は使用頻度の高いモジュール(実際に使用しているモジュール)の名前なので、' random'関数を呼び出すことは良い名前選択ではありません。 –

+0

私はジョン・コールマンの提案に間違いなく同意します。 –

答えて

0

ありがとうございます。初めに(limit2 = len(limit)を通して)初期化しますが、その値を更新することはないため、無限ループが発生します。

あなたは、単にLEN(上限)に代わりのLIMIT2にチェックを実行する必要があります。

以下の解決策を参照してください。私はを2つ追加し、sleeptime.sleepに置き換え、実行する検査の数を固定する(最大試行回数5回を目指している場合は、importを追加して、インデントを改善してlimit2の自由を取った。 len(limit)は5未満である必要があります)。あなたのコード内に固定されなければならないいくつかの他のものの間で - - それは、すでにa very common moduleで使用される名前であるので、あなたは、ランダム機能を呼び出すことは避けるべき

from random import randint 
import time 

def random(): 
    x_val = randint(1,100) 
    limit = [] 
    # limit2 = len(limit) 
    while True: 
     try: 
      roll = int(raw_input("Please pick a number: ")) 
     except ValueError: 
      print "Please input numbers only" 
      continue 
     if len(limit) < 5: 
      if roll > 100 or roll < 1: 
       print "Exceed Limited Guess" 
       continue 
      elif roll < x_val: 
       limit.append(1) 
       time.sleep(1) 
       print "Your guess is lower!" 
       continue 
      elif roll > x_val: 
       limit.append(1) 
       time.sleep(1) 
       print "Your guess is higher!" 
       continue 
      elif roll == x_val: 
       print len(limit) 
       return "You guessed correct! You win!" 
       break 
      else: 
       print "Incorrect Input" 
       continue 
     elif len(limit) >= 5: 
      return "You guessed over 5 times. You lose, sucker..." 
      break 
    print "Welcome to my world! You will have to pick a correct number from 1 to 100! If you can do it within 5 times you win! Otherwise you suck!" 

while True: 
    try: 
     start = raw_input("Start Rolling? Yes or No: ").lower() 
    except ValueError: 
     print "Answer Yes or no" 
     continue 
    if start == "y" or start == "yes" or start == "ye": 
     user2 = random() 
     print user2 
    elif start == "n" or start == "no" or start == "noo": 
     print "Ready when you are" 
     continue 
    else: 
     print "Answer Yes or No" 
     continue 

注目に値するがあることです。

+0

アドバイスをいただきありがとうございます!私はあなたのアドバイスに従って試してみましたが、どういうわけか、私が失うと言う前に6回試してみることになります。 time.sleep(1)の場合、私はpython 2.7を使用しているか昇華しているかどうかは分かりませんが、sleep(1)を使用すると動作します。 – calc

+0

'len(limit)<= 5'ならば、あなたは失うと言う前に追加の試行をチェックします(6回の値をチェックし、7回目に失うと言うでしょう) 。 'len(limit)<5'ならば(最後の' elif'を編集することを忘れないでください.-あるいは 'else'を使うだけです) –

+0

これは間違いなく私が覚えておく重要な情報です!もう一度完全に動作するようにしていただきありがとうございます!これは本当に楽しいです。 – calc