循环不会停止

时间:2014-04-21 18:17:48

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

num_1 = input("Please enter first number: ")
num_2 = input("Please enter second number: ")    
print("The numbers you have chosen are",num_1,"and",num_2)

while num_1 or num_2 > 0:
    if num_1 < num_2:
        print("First number entered is greater.")

    elif num_1 > num_2:
        print("Second number entered is greater.")

    else:
        print("Both numbers entered are equal.")

print("Program terminated...")

3 个答案:

答案 0 :(得分:1)

您的while循环中的条件未正确表达。你的意思是“只要至少有一个数字大于0”。

但是,你所表达的是:

while num_1 or num_2 > 0

Python将其读作:

while ((num_1) or (num_2 > 0)):

因此,条件询问num_1的布尔值,仅当Falsenum_1时才会计算为0。它还询问num_2是否大于0并且取两个布尔值的OR

这大致转换为:

while (num_1 is not 0 or num_2 is larger than 0)

您正在寻找的是

while (num_1 is larger than 0 or num_2 is larger than 0)

...可以写成:

while num_1 > 0 or num_2 > 0

此外,您永远不会在while循环中重新定义num_1num_2,这就是为什么它不停地继续循环。您可以按如下方式修复:

同时:     #you if语句     num_1 =输入(“请输入第一个数字:”)     num_2 =输入(“请输入第二个数字:”)
    print(“您选择的数字是”,num_1,“和”,num_2)

这会一直询问用户输入,直到他们输入两个非正数

答案 1 :(得分:0)

它永远不会退出while循环。如果

将while语句替换为另一个语句

答案 2 :(得分:0)

试试这个:

    num1 = int(input('Enter first number: '))
    num2 = int(input('Enter second number: '))
    if num1 == num2:
        print('Both are equal.')
    elif num1 > num2:
        print('Number 1 is greater.')
    elif num1 < num2:
        print('Number 2 is greater.')
    print('Program terminated.')

永远记住,当你想要一个来自用户的数字时,你需要输入int(input([prompt]))而不是输入([prompt])。

你不需要&#39; while&#39;这个程序的循环,但如果你真的想要一个,那么你可以这样做:

    num1 = int(input('Enter first number: '))
    num2 = int(input('Enter second number: '))
    while True:
        if num1 == num2:
            print('Both are equal.')
            break
        elif num1 > num2:
            print('Number 1 is greater.')
            break
        elif num1 < num2:
            print('Number 2 is greater.')
            break
    print('Program terminated.')

&#39;破&#39;告诉循环中断并继续该程序。