Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多次提供不正确的输入时崩溃_Python_Python 3.x - Fatal编程技术网

Python 多次提供不正确的输入时崩溃

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

我正在尝试制作一个简单的数字猜测程序,它工作得很好,但是如果我输入两次“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("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@BallpointBen
catch
不是Python。你的意思是除了之外的?谢谢我在输入消毒剂中编辑了我的评论,
猜测
一开始总是一个
str
type()
不检查它是否可转换为
int
,只检查它实际上是
int
。使用
try/except
instead@BallpointBen
catch
不是Python。你的意思是除之外的?谢谢我编辑了我的评论这非常有用谢谢,不知道如何传递变量,谢谢!这是非常有用的谢谢,不知道如何传递变量,谢谢!