Python 3:尽管满足条件,循环仍不会结束

时间:2020-04-29 17:13:14

标签: python python-3.x while-loop boolean

我已经学习Python大约5天了,而且我没有任何编程经验,所以如果这太基础了,就表示歉意。我检查了其他一些类似的问题,但是问题不一样。

我正在为我正在编写的程序定义一些输入检查功能,我的想法是依靠while循环和布尔条件使它们工作,但是我发现无论使用哪种循环都不会结束输入有效。

这是我写过的最简单的书:

def is_num(num):
    try:
        num = float(num)
        num_check = True
    except:
        print("Incorrect value. Please, enter a number.")

num_check = False
while not num_check:
    user_num = input("Enter a number: ")
    is_num(user_num)
print("Valid number.")

如果我输入的不是数字,我确实会收到错误消息,但是如果我输入数字,我只会一遍又一遍地得到输入提示。

我认为问题可能来自num_check,而仅在函数内部定义,所以我尝试了此版本,但实际上并没有改变:

def is_num(num, num_check):
    try:
        num = float(num)
        num_check = True
    except:
        print("Incorrect value. Please, enter a number.")

user_num_check = False
while not user_num_check:
    user_num = input("Enter a number: ")
    is_num(user_num, user_num_check)
print("Valid number.")

要使其正常工作,我应该更改什么?谢谢!

2 个答案:

答案 0 :(得分:0)

通常,您需要一个条件来打破while循环。只需等待True即可继续运行循环。您什么时候想退出循环?

可能是一个简单的代码,这样会有所帮助

def is_num(num, num_check):
    try:
        num = float(num)
        num_check = True
    except:
        print("Incorrect value. Please, enter a number.")

user_num_check = False
while not user_num_check:
    user_num = input("Enter a number: ")
    if not is_num(user_num, user_num_check):
        break
    print("Valid number.")

答案 1 :(得分:0)

答案正确时,您需要退出循环。

为此,您可以使用else语句。

因此,这就是您的代码:

def is_num(num):
    try:
        num = float(num)
        num_check = True
    except:
        print("Incorrect value. Please, enter a number.")
    else:
        print("Valid number.")
num_check = False
while not num_check:
    user_num = input("Enter a number: ")
    is_num(user_num)

希望这对您的问题有所帮助!