如何检查每个输入的isdigit

时间:2019-01-29 16:15:15

标签: python python-3.x

我正在尝试编写一个生成随机整数的游戏,用户必须猜测它。

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

7 个答案:

答案 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?

还有:

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

答案 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)