如何检查isdigi的每个输入

2024-04-19 11:54:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个游戏,生成一个随机整数,用户必须猜测它。你知道吗

问题是,如果用户输入的不是数字,它就会崩溃。因此,我尝试使用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")

Tags: to用户import游戏numberinputif数字
3条回答

我建议采取以下措施:

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")

解决这个问题的典型方法是“请求原谅,而不是三思而后行”。具体来说,尝试将输入解析为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')

如果您的代码由于用户输入的不是数字而崩溃,那么请确保用户输入了数字,或者在尝试将其与数字进行比较时处理错误。你知道吗

您可以检查输入中的所有字符并确保它们都是数字。你知道吗

或者可以使用try/except机制。也就是说,尝试转换为您希望用户输入的数字类型并处理任何错误。查看此帖子:

How can I check if a string represents an int, without using try/except?

还有:

https://docs.python.org/3/tutorial/errors.html

相关问题 更多 >