while循环中的try和if语句有问题

2024-05-26 07:44:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我清楚地理解了异常处理,而循环和条件语句。但我遇到了一个简单的问题,即我的代码执行从未到达except语句。你知道吗

我使代码尽可能简单地指出问题所在。 所以代码要求按“1”。只有这样它才能跳出while循环。其他的都应该例外。字符,例如“a”和“b”,因为它们不能转换为整数。但任何其他数字都不会触发异常。它只是回到输入步骤。为什么会这样?显然,除1以外的任何其他数字都不等于1。你知道吗

while True:
    click = input('Press 1')
    try:
        if int(click) == 1:
            print('correct')
            break
    except:
        print('wrong')

Tags: 代码trueinput步骤数字整数语句条件
3条回答

except仅当抛出异常时才到达。可以强制代码在int(click) != 1时抛出ValueError。下面的内容应该能帮到你。你知道吗

while True:
    click = input('Press 1')
    try: 
        if int(click) == 1:
            print('correct')
            break
        else:
            raise ValueError('wrong')
    except:
        raise ValueError('User input is not valid')

只有出现错误时,代码才会进入异常。如果输入非数字字符,则会发生这种情况。但如果输入除1以外的任何数字,则不会出现错误,因此控件不会移到异常。如果person使用raise关键字输入1以外的数字,则可以创建一个错误。你知道吗

try:
    if(int(input())==1:
        print('entered 1')
    elif(int(input())!=1):
        raise ValueError(' enter 1 only')
except:
     print('error')

您混淆了两件事:引发异常和处理引发的异常。你知道吗

你要做的是:

    while True:
        click = input('Press 1')
        if int(click) == 1:
            print('correct')
            break
        else:
            raise ValueError('Wrong')

然后可以使用try/except语句处理引发的异常,如下所示:

while True:
        click = input('Press 1')

        try:
            if int(click) == 1:
                print('correct')
                break
            else:
                raise ValueError('Wrong')
        except ValueError:
            print('Something went wrong with user input, but this except block will handle it')

详见https://docs.python.org/2/tutorial/errors.html

相关问题 更多 >