2017-06-03 4 views
-1

私は、ユーザが推測できる乱数を生成するプログラムを作成しました。私はすべての可能なエラーをキャッチしようとしています。私が理解できない唯一のものはこれです。最初はゲームを続行するためにenterキーを押すようにユーザーに頼んでいます。プログラムは文字列を入力するか、特殊文字や句読点を入力するかをキャッチします。私が防ぐことができない唯一の事は、数字を入力するとプログラムが終了することです。これは私が持っているものです。この問題は、tryブロックの最初のwhileループにあります。任意の提案や助けをいただければ幸いです。 ありがとうございます。Python catch intまたはstr

あなたは番号がプログラムが(作品) intに数値を変換しようとすることです入力したときに何が起こる
from random import randint #imports randint from random class 

cont = input('Press enter to continue') 

while True: 
    if cont != '': 
     try: 
      int(cont) 
      str(cont) 
      break 
     except ValueError: 
      print('Just hit enter') 
      cont = input() 
      continue 
    elif cont == '': 
     while True: 

      randNum = randint(1, 100) 
      print('Try guesssing a number between 1 and 100') 
      num = input() 

      while True: 
       try: 
        int(num) 
        break 
       except ValueError: 
        print('Please enter a number') 
        num = input() 

       int(num) 
      if num == randNum: 
       print('Good job, ' + str(num) + ' is correct.') 
      else: 
      print('Sorry, the number was ' + str(randNum) + '.') 

     print('Would you like to try again?') 
     answer = input().lower() 
     if answer == 'yes': 
      continue 
     elif answer == 'no': 
      print('Thanks for playing') 
      exit() 
     else: 
      while True: 
       print('Please type yes or no') 
       answer = input() 
       if answer == 'yes': 
        break 
       elif answer == 'no': 
        print('Thanks for playing.') 
        exit() 

答えて

1

、その後、(も働く)、その後、それが壊れるstrします。代わりに、次のことを試してください:それは(事実上、常に可能である)文字列に変換しようとすると成功した場合

from random import randint #imports randint from random class 

cont = input('Press enter to continue') 

while cont != '': 
    cont = input('Press enter to continue') 

while True: 

    randNum = randint(1, 100) 
    print('Try guesssing a number between 1 and 100') 
    num = input() 

    while True: 
     try: 
      int(num) 
      break 
     except ValueError: 
      print('Please enter a number') 
      num = input() 

     num = int(num) 
    if num == randNum: 
     print('Good job, ' + str(num) + ' is correct.') 
    else: 
    print('Sorry, the number was ' + str(randNum) + '.') 

print('Would you like to try again?') 
answer = input().lower() 
if answer == 'yes': 
    continue 
elif answer == 'no': 
    print('Thanks for playing') 
    exit() 
else: 
    while True: 
     print('Please type yes or no') 
     answer = input() 
     if answer == 'yes': 
      break 
     elif answer == 'no': 
      print('Thanks for playing.') 
      exit() 
+0

私はさまざまな方法でエラーを捕捉しようとしていましたが、これは機能します。ありがとう。 – kfreeman04208

+0

@ kfreeman04208問題はありません:) –

+0

数字以外のすべてを捕まえるために私のやり方がなぜ機能するのか説明できますか? – kfreeman04208

-1
while True: 
    if cont != '': 
     try: 
      int(cont) 
      str(cont) 
      break 

それはここで何して、試してみて、contはint型に変換されます。それが成功すると、whileループを壊してプログラムを終了します。 構文解析しようとするとint以外の他のシナリオでは、int(cont)エラーが発生し、プログラムを続行します。

Enterを押すとcontが開始されます。彼がテキストを入力する前に何かを書いていないことを確認する理由はありません。

関連する問題