Python 多次提供不正确的输入时崩溃
我正在尝试制作一个简单的数字猜测程序,它工作得很好,但是如果我输入两次“a”,而不是一个有效的int,它就会崩溃。有人能解释一下我做错了什么吗Python 多次提供不正确的输入时崩溃,python,python-3.x,Python,Python 3.x,我正在尝试制作一个简单的数字猜测程序,它工作得很好,但是如果我输入两次“a”,而不是一个有效的int,它就会崩溃。有人能解释一下我做错了什么吗 import random def input_sanitiser(): guess = input("Please enter a number between 1 and 10: ") while True: if type(guess) != int: guess = int(input("
import random
def input_sanitiser():
guess = input("Please enter a number between 1 and 10: ")
while True:
if type(guess) != int:
guess = int(input("That isn't a number, try again: "))
elif guess not in range (1,11):
guess = int(input("This is not a valid number, try again: "))
else:
break
def main():
number = random.randrange(1,10)
guess = 0
input_sanitiser()
while guess != number:
if guess < number:
print("This number is too low!")
input_sanitiser()
if guess > number:
print("This number is too high!")
input_sanitiser()
else:
break
print ("Congratulations, you've guessed correctly")
if __name__ == "__main__":
main()
随机导入
def输入_消毒剂():
猜测=输入(“请输入一个介于1和10之间的数字:”)
尽管如此:
如果类型(猜测)!=int:
guess=int(输入(“这不是一个数字,请重试:”)
elif猜测不在范围(1,11)内:
guess=int(输入(“这不是一个有效的数字,请重试:”)
其他:
打破
def main():
数字=随机。随机范围(1,10)
猜测=0
输入消毒剂()
猜猜看!=编号:
如果猜测<数字:
打印(“此数字太低!”)
输入消毒剂()
如果猜测>数字:
打印(“此数字太高!”)
输入消毒剂()
其他:
打破
打印(“祝贺你,你猜对了”)
如果名称=“\uuuuu main\uuuuuuuu”:
main()
在尝试将输入转换为int
之前,您希望检查输入:
int(input("This is not a valid number, try again: "))
我会写:
while True:
try:
guess = int(input("This is not a valid number, try again: "))
except ValueError:
pass
else:
break
旁注:代码未按预期工作:
def main():
number = random.randrange(1,10)
guess = 0
input_sanitiser() # <<<<<<<<<<
while guess != number:
您想在将输入转换为
int
之前检查输入:
int(input("This is not a valid number, try again: "))
我会写:
while True:
try:
guess = int(input("This is not a valid number, try again: "))
except ValueError:
pass
else:
break
旁注:代码未按预期工作:
def main():
number = random.randrange(1,10)
guess = 0
input_sanitiser() # <<<<<<<<<<
while guess != number:
在
input_santiiser
中,guess
一开始总是一个str
type()
不检查它是否可转换为int
,只检查它实际上是int
。使用try/except
instead@BallpointBencatch
不是Python。你的意思是除了之外的?谢谢我在输入消毒剂中编辑了我的评论,猜测
一开始总是一个str
type()
不检查它是否可转换为int
,只检查它实际上是int
。使用try/except
instead@BallpointBencatch
不是Python。你的意思是除之外的?谢谢我编辑了我的评论这非常有用谢谢,不知道如何传递变量,谢谢!这是非常有用的谢谢,不知道如何传递变量,谢谢!