如果不满足“如果”条件,则无法执行“其他”语句

时间:2019-08-11 07:11:36

标签: python loops for-loop python-3.7

我正在尝试根据2个用户输入数字打印数字。如果第一个小于第二个,则从较小到较大打印。如果第一个大于第二个,则从大到小依次打印。

if&else语句中的两个语句都已经过测试以包含正确的逻辑。但是,只有if语句有效,但是在测试else条件时,系统无法执行else语句。

def question1c():
    firstNum = int(input("Enter first number: "))
    secondNum = int(input("Enter second number: "))
    if firstNum < secondNum: 
        for n in range(firstNum, secondNum + 1):
            print(n)
    else: 
        for n in range(secondNum, firstNum - 1, -1):
            print(n)
question1c()

场景1:

Enter first number: 10
Enter second number: 12
10
11
12

方案2:

Enter first number: 12
Enter second number: 10
12
11
10

方案2的实际结果:

Enter first number: 12
Enter second number: 10 <-- fails to execute else statements

2 个答案:

答案 0 :(得分:2)

您的问题是当firstNum = 12secondNum = 10时,else被正确执行了(因为12 >= 10),但是您的range是:

range(10, 11, -1)

因此,循环根本不会执行,也不会输出任何内容(因为您正尝试从10降到11

如您所见,您希望将range更改为:

range(firstNum, secondNum - 1, -1)

或者,您可以消除条件并在一个range中使用方向:

firstNum = int(input("Enter first number: "))
secondNum = int(input("Enter second number: "))

direction = 1 if firstNum < secondNum else -1

for n in range(firstNum, secondNum + direction, direction):
    print(n)

答案 1 :(得分:1)

secondNum小于firstNum,因此您不能失败。切换它们。

else: 
    for n in range(firstNumNum, secondNum - 1, -1):
        print(n)