我正在尝试编写一个生成随机整数的游戏,用户必须猜测它。
问题在于,如果用户输入的不是数字,则会崩溃。因此,我尝试使用isdigit
,它在一开始就可以使用,但是如果用户在第一个输入是数字后决定不输入数字,它仍然会崩溃。我不知道如何让每个输入都检查isdigit
。
import random
x =(random.randint(0,100))
print("The program draws a number from 0 to 100. Try to guess it!")
a = input("enter a number:")
while a.isdigit() == False :
print("It is not a digit")
a = input("enter a number:")
if a.isdigit() == True :
a = int(a)
while a != x :
if a <= x :
print("too less")
a = input("enter a number:")
elif a >= x :
print("too much")
a = input("enter a number")
if a == x :
print("good")
答案 0 :(得分:1)
我建议您执行以下操作:
completed = False
while not completed:
a = input("enter a number: ")
if a.isdigit():
a = int(a)
if a < x:
print("too little")
elif a > x:
print("too much")
else:
print("good")
completed = True
else:
print("It is not a digit")
答案 1 :(得分:0)
如果您的代码因用户未输入数字而崩溃,则请确保用户输入数字,或者在尝试将其与数字进行比较时处理错误。
您可以遍历输入中的所有字符,并确保它们都是数字。
或者您可以使用try/except
机制。即,尝试将其转换为希望用户输入并处理所有错误的数字类型。检查这篇文章:
How can I check if a string represents an int, without using try/except?
还有:
答案 2 :(得分:0)
解决该问题的典型Python方法是“请求宽恕,而不是在飞跃前先寻找”。具体来说,请尝试将输入解析为int
,并捕获所有错误:
try:
a = int(input('Enter a number: '))
except ValueError:
print('Not a number')
除此之外,问题显然是您在程序启动时进行了一次仔细的检查,但在以后再次要求输入时没有进行仔细的检查。尝试将要求输入的位置减少到一个位置,然后将其检查到一个位置,并编写循环以根据需要重复执行此操作:
while True:
try:
a = int(input('Enter a number: '))
except ValueError: # goes here if int() raises an error
print('Not a number')
continue # try again by restarting the loop
if a == x:
break # end the loop
elif a < x:
print('Too low')
else:
print('Too high')
print('Congratulations')
答案 3 :(得分:0)
# user vs randint
import random
computer = random.randint(0,100)
while True:
try:
user = int(input(" Enter a number : "))
except (ValueError,NameError):
print(" Please enter a valid number ")
else:
if user == computer:
print(" Wow .. You win the game ")
break
elif user > computer:
print(" Too High ")
else:
print(" Too low ")
I think this can solve the issues.
答案 4 :(得分:0)
在您的代码中,您要检查用户是否输入了no或string,因为您未在输入中使用int(),它将在代码中将输入作为字符串和进一步信息,因此将无法检查<=条件< / p>
代码:-
a = input ("Enter no")
try:
val = int(a)
print("Yes input string is an Integer.")
print("Input number value is: ", a)
except ValueError:
print("It is not integer!")
print(" It's a string")
答案 5 :(得分:0)
还可以使用eval函数检查输入字符串的eval
completed = False
while not completed:
a = input("enter a number: ")
if type(eval(a)) == int:
a = int(a)
if a < x:
print("too little")
elif a > x:
print("too much")
else:
print("good")
completed = True
else:
print("It is not a digit")
答案 6 :(得分:-1)
您可能必须学习如何使用函数并编写自己的输入函数。
def my_input(prompt):
val = input(prompt)
if val.isdigit():
return val
else:
print('not a number')
# return my_input(prompt)