我正在尝试根据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()
Enter first number: 10
Enter second number: 12
10
11
12
Enter first number: 12
Enter second number: 10
12
11
10
Enter first number: 12
Enter second number: 10 <-- fails to execute else statements
答案 0 :(得分:2)
您的问题是当firstNum = 12
和secondNum = 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)