Python猜谜游戏-while循环只允许整数
我正在根据《为绝对初学者编写python编程:第3章》一书,用python构建简单的猜测数字游戏。我不知道如何使while循环部分只接受输入中的整数: 结果应该是,在用户输入float或string程序打印后,只使用整数 用户键入整数后,它会将他带出游戏循环:Python猜谜游戏-while循环只允许整数,python,while-loop,Python,While Loop,我正在根据《为绝对初学者编写python编程:第3章》一书,用python构建简单的猜测数字游戏。我不知道如何使while循环部分只接受输入中的整数: 结果应该是,在用户输入float或string程序打印后,只使用整数 用户键入整数后,它会将他带出游戏循环: # Guessing loop while guess != computer: if guess < computer: print("You're bidding to low") else:
# Guessing loop
while guess != computer:
if guess < computer:
print("You're bidding to low")
else:
print("You're bidding to high")
guess = int(input("Take a guess: "))
tries += 1
您可以编写一个自定义函数来检查有效输入:
def isInteger(string):
try:
int(string)
return True
except ValueError:
return False
并修改while循环,如下所示:
while not isInteger(guess):
guess = input()
您可以编写一个自定义函数来检查有效输入:
def isInteger(string):
try:
int(string)
return True
except ValueError:
return False
并修改while循环,如下所示:
while not isInteger(guess):
guess = input()
您可以尝试将输入转换为float,然后使用is_integer检查输入是否为整数。但是,如果输入包含字母,则会引发ValueError异常,您可以处理该异常以要求输入整数 这将对您有用:
while True:
try:
guess = input("Use whole numbers: ")
if float(guess).is_integer():
guess = int(guess)
break
except ValueError:
continue
print(guess)
如果输入类似于123.0,这也会起作用
编辑以解决有关输入的评论,如1.000000000000000035:
您可以尝试将输入转换为float,然后使用is_integer检查输入是否为整数。但是,如果输入包含字母,则会引发ValueError异常,您可以处理该异常以要求输入整数 这将对您有用:
while True:
try:
guess = input("Use whole numbers: ")
if float(guess).is_integer():
guess = int(guess)
break
except ValueError:
continue
print(guess)
如果输入类似于123.0,这也会起作用
编辑以解决有关输入的评论,如1.000000000000000035:
我认为这对您来说是可行的,我使用的是python 2.7,与更高版本没有太大区别
import random
def is_integer(num):
try:
num= int(num)
return num
except:
False
def main(prompt, retries=5, complaint="wrong guess!!! try again..."):
computer = random.randint(1, 100)
while retries > 0:
my_guess = raw_input(prompt)
if is_integer(my_guess) == computer:
print "Bingo!!! the answer is ",computer
break
retries = retries - 1
if retries > 0:
print "{} remaining {} tries left".format(complaint, retries)
else:
print "You are out of tries..."
print "Exiting......."
main("please Guess a number? ")
我认为这对您来说是可行的,我使用的是python 2.7,与更高版本没有太大区别
import random
def is_integer(num):
try:
num= int(num)
return num
except:
False
def main(prompt, retries=5, complaint="wrong guess!!! try again..."):
computer = random.randint(1, 100)
while retries > 0:
my_guess = raw_input(prompt)
if is_integer(my_guess) == computer:
print "Bingo!!! the answer is ",computer
break
retries = retries - 1
if retries > 0:
print "{} remaining {} tries left".format(complaint, retries)
else:
print "You are out of tries..."
print "Exiting......."
main("please Guess a number? ")
不能将相等值与类型try 1==int进行比较,结果将为False。此外,用户输入始终是字符串。对于检查整数,您可以尝试,但对于负数也会失败。可能的重复项:这实际上可能是一个更好的目标。为什么不只是将输入转换为int,guess=intinputguess a number,这样,它总是正确的类型。@user2699,因为如果他们输入带有小数点的输入,将抛出ValueError。您可以在try/except中换行,以确认输入的是整数。此外,这不是本练习的重点。您不能将相等值与类型try 1==int进行比较,您将得到False。此外,用户输入始终是字符串。对于检查整数,您可以尝试,但对于负数也会失败。可能的重复项:这实际上可能是一个更好的目标。为什么不只是将输入转换为int,guess=intinputguess a number,这样,它总是正确的类型。@user2699,因为如果他们输入带有小数点的输入,将抛出ValueError。您可以在try/except中换行,以确认输入的是整数。另外,这不是练习的重点。试试看,它除了1.00000000000035甚至1.00000000000000000000000000000000000000000035之外都不会。。我将添加一个屏幕截图来显示它的工作原理。尝试一下,它除了1.00000000000000000035或者甚至1.00000000000000000000000000000000000000000035之外都不会出现。。我将添加一个屏幕截图来显示它的工作原理。