和我之前的很多人一样,我在这方面是全新的,所以如果我没有提供所需的所有信息,那么请轻松一下,并提前感谢你。
在我开始之前,值得一提的是程序本身运行良好,我担心的是确保我已经考虑过所有可能的情况。开始。
我收到此错误:
File "C:\Users\brand\Desktop\WIP Programs\Guess the number 31.July.py", line 15, in <module>
userGuess = int(input("I guess: "))
ValueError: invalid literal for int() with base 10: ' '
当我按空格键进行输入时,它会返回此值。我不知道如何使程序返回有用的东西,例如再次猜测的能力。这是我的代码,供参考:
import random
guessNum = 0
print("Welcome to the guess the number game! Please, tell me your name!")
user = input("My name is: ")
randNum = random.randrange(1, 10, 1) #Generates number
print("Okay, " + user + ", guess the random number, the range is 1 to 10.")
#Guessing phase
while guessNum < 3:
userGuess = int(input("I guess: "))
if userGuess > randNum:
print("Too high! Try again.")
guessNum = guessNum + 1
if userGuess < randNum:
print("Too low! Try again.")
guessNum = guessNum + 1
if userGuess == randNum:
print("Great! You guessed my number!")
break
else:
print("Please choose a valid answer.")
if userGuess == randNum:
print("If you would like to play again, please restart the program.")
if userGuess != randNum:
print("Nope. My number was: " + str(randNum))
如果我有任何不必要或缺少我应该拥有的任何东西,请随时纠正我!
修改<!/强>
离开第一个回复。我正确地将.isdigit()添加到我的代码中:
if (userGuess.isdigit()):
userGuess = input("I guess: ")
if userGuess > randNum:
print("Too high! Try again.")
guessNum = guessNum + 1
它不断传递一个异常,说'userGuess'没有定义。精细!好的,所以我在代码旁边的用户旁边定义它。在运行时返回
AttributeError: 'int' object has no attribute 'isdigit'
也很好,所以我将str(0)添加到userGuess以尝试修复然后返回:
TypeError: unorderable types: str() > int()
它现在让我输入一个数字,但我无法弄清楚如何修复。有什么建议吗?
答案 0 :(得分:0)
当用户选择一个号码时,他的输入将作为字符串返回。 之后,您尝试将该字符串转换为整数。这适用于字符串,因为&#34; 13&#34;或&#34; 4&#34;,但不适用于&#34;等字符串。 3&#34;或&#34; 2a&#34;。因此,在这种情况下会出现例外情况。 作为解决方法,您可以使用&#34; isdigit()&#34;检查字符串。转换之前的方法。对于仅包含数字的字符串,该方法将返回True,否则返回False。
答案 1 :(得分:0)
您的问题是,行userGuess = int(input("I guess: "))
正在转换为整数值而不检查是否可以这样做。当它找到一个字符值时,这将抛出异常,因为转换是不可能的。
您可以通过try ... catch来阻止这种情况,但我认为更好的方法是在尝试转换之前使用isDigit()
方法检查值是否只是数字。
while guessNum < 3:
userGuess = input("I guess: ")
if (userGuess.isDigit()):
userGuess = int(userGuess)
if userGuess > randNum:
print("Too high! Try again.")
guessNum = guessNum + 1
...
if userGuess == randNum:
print("Great! You guessed my number!")
break
else:
print("Please choose a valid answer.")