Python 需要将用户输入验证为整数

Python 需要将用户输入验证为整数,python,validation,types,Python,Validation,Types,我想添加代码,这样如果用户输入的不是整数,它就会打印出一些内容。在我写的最后一行 如果猜测!=int我想让程序判断猜测是否不是数字 import random number = random.randint(1,100) guess = 0 guesses = 0 while guess != number: guess = int(input("Guess my number between 1 and 100(inclusive):")) guesses = guess

我想添加代码,这样如果用户输入的不是整数,它就会打印出一些内容。在我写的最后一行
如果猜测!=int
我想让程序判断猜测是否不是数字

import random

number = random.randint(1,100)
guess = 0
guesses = 0

while guess != number:

    guess = int(input("Guess my number between 1 and 100(inclusive):"))
    guesses = guesses + 1

    if guess == number:
        print("Well done! My number is:"number,"You had",guesses,"guesses"
    elif guess < number:
        print ('sorry, my number is higher')
    elif guess > number:
        print ('Sorry, My number is lower')
    if guess != int:
        print ("Enter a Number!!")
随机导入
number=random.randint(1100)
猜测=0
猜测=0
猜猜看!=编号:
guess=int(输入(“猜测我的数字在1和100之间(包括):”)
猜测=猜测+1
如果guess==数字:
打印(“干得好!我的号码是:“数字”,“你有”,猜测,“猜测”
elif guess<数字:
打印('对不起,我的号码更高')
elif guess>数字:
打印('对不起,我的号码较低')
如果猜测!=int:
打印(“输入一个数字!!”)

在我被善意地警告过原始输入永远是字符串之后。也许这就是你需要的

guess =int(input("Guess my number between 1 and 100(inclusive):"))
guesses = guesses + 1
try:
    guess = int(guess)
    if guess == number:
     print("Well done! My number is:", number,"You had",guesses,"guesses")
    elif guess < number :
       print ('sorry, my number is higher')
    elif guess > number:
        print ('Sorry, My number is lower')
except:
    print("Enter a number!")
让我们用好的旧的

请求原谅比请求允许更容易。这种常见的Python编码风格假设存在有效的键或属性,如果假设被证明是错误的,则捕获异常。这种简洁快速的风格的特点是存在许多try和except语句。该技术与许多其他lan常见的LBYL风格形成对比诸如C

guess=input(“猜我的数字在1到100之间(包括100):”)
尝试:
猜测=int(猜测)
除值错误外:
打印(“输入一个数字!!”)
其他:
如果guess==数字:
打印(“干得好!我的号码是:“数字”,“你有”,猜测,“猜测”
elif guess<数字:`
打印('对不起,我的号码更高')
其他:
打印('对不起,我的号码较低')

我喜欢@Nsh的答案-它更常见,在实践中可能更好。但是如果您不喜欢使用try-catch语句和sql的粉丝

import random

my_number = random.randint(1,100)
your_number = None
counter = 0
While your_number != my_number:
    s = input("Guess my number between 1 and 100(inclusive):")
    counter += 1
    if all(i in '0123456789' for i in s):
        your_number = int(s)
        if my_number == your_number: print 'Well done!'
        else: print 'sorry, my number is {}'.format('higher' if my_number > your_number else 'lower')

享受。

除了猜测总是一个字符串。@MalikBrahimi感谢你的提醒,我完全掩盖了他的整个问题。下次我会更加小心。在你的第一个示例中,你将原始输入转换为
int
twice。实际上,由于转换,它将始终是一个整数。问题是,这违背了目的错误处理的例子。如果你输入你的名字怎么办?当你输入输入时,你会得到一个错误。2条注释:1.try/except块应该尽可能短。2.带break的无休止循环是更好的解决方案。我认为带基字符串的正则表达式比一系列错误处理和检查更干净、更通俗。@MalikBrahimi正则表达式是一个非常繁重的操作例如条件
sum(map(str.isdigit,guess.strip())==len(guess)
过早优化部门再次罢工。此检查永远不会成为性能瓶颈,因此主要参数是可读性。可以说
guess.isdigit()
try/except
子句只是两种可能性。我个人更喜欢异常(正如我的链接所示,Guido也是如此)。感谢您的输入,但您的代码没有循环。
guess = input("Guess my number between 1 and 100(inclusive):")
try:
    guess = int(guess)
except ValueError:
    print ("Enter a Number!!")
else:
    if guess == number:
        print("Well done! My number is:"number,"You had",guesses,"guesses"
    elif guess < number :`
        print ('sorry, my number is higher')
    else:
        print ('Sorry, My number is lower')
import random

my_number = random.randint(1,100)
your_number = None
counter = 0
While your_number != my_number:
    s = input("Guess my number between 1 and 100(inclusive):")
    counter += 1
    if all(i in '0123456789' for i in s):
        your_number = int(s)
        if my_number == your_number: print 'Well done!'
        else: print 'sorry, my number is {}'.format('higher' if my_number > your_number else 'lower')