尝试除语句错误python

时间:2014-03-20 11:46:58

标签: python try-catch except

def validnumber():
    notValid=True
    while(notValid==True):
        number=input('Enter number between 0 and 9->')
        if number=='':
            print('Empty input!')
        else:
            try:
                number=int(number)

            except ValueError:
                print('Number not an int value!Try Again!')
            else:
                if number>=0 and number<=9:
                    notvalid=False
    return number

def main():
    myvalidnumber=validnumber()
    print(myvalidnumber)

main()      
嘿伙计们。我写了这个程序,只有一个问题。

- &GT;即使我输入0到9之间的数字,程序也不会结束。有人能解释为什么会发生这种情况吗?。

提前致谢:)

2 个答案:

答案 0 :(得分:2)

Python的变量区分大小写。 notvalidnotValid不同。所以,当你说

notvalid=False

您正在创建一个新变量。只需将其更改为

即可
notValid = False

你没事。

答案 1 :(得分:0)

你已经从thefourtheye得到了解决方案。仅供记录:在Python中实现此类函数的规范方法是使用无限循环和break语句或早期return(如下例所示)。正确使用continue语句也可以简化流程:

def validnumber():
    while True:
        number=input('Enter number between 0 and 9->')
        if number=='':
            print('Empty input!')
            continue

        try:
            number=int(number)
        except ValueError:
            print('Number not an int value! Try Again!')
            continue

        if number < 0 or number > 9:
           print('Number not between 0 and 9! Try Again!')
           continue

        return number