嗨,所以我要写作业,以便输入两个数字。如果左边的数字之一小于右边的数字,它将增加。如果第二个数字小于第一个数字,它将减少。如果两个数字相同,则应保持相同。这是我到目前为止编写的程序:
def range_of_numbers (number1, number2):
if (number2 > number1):
for num1 in range (1):
print (2, 3, 4, 5, 6, 7 )
elif (number1 > number2):
for num2 in range (1):
print (19, 18, 17, 16, 15, 14, 13, 12, 11)
else:
print (42)
示例调用为: range_of_numbers(2,8) range_of_numbers(18,11) range_of_numbers(42,42) 我把它们中的两个弄对了,但是最后一个总是输出错误,我不知道是什么错误或在哪里解决错误。
答案 0 :(得分:2)
首先,您对前两种情况的处理方式是“作弊”,也就是所谓的“硬编码”结果。您不是在编写执行任务的功能,而是在打印您知道应该看到的答案。
具有讽刺意味的是,您在这里很近。
这应该做您想要的:
def range_of_numbers (num1, num2):
if(num1 < num2):
for i in range(num2-num1 +1):
print(num1+i)
elif(num1 > num2):
for i in range(num1-num2 +1):
print(num1-i)
else:
print(num1)
如果num1或num 2更大,我们找出差值,并进行一个大小相同的for循环(由于索引为0,因此希望在此处包括两端,因此将其设为+1)。然后我们要么向上计数要么向下计数,具体取决于哪个值更高。
答案 1 :(得分:0)
使用1或-1作为您范围内的步长:
def range_of_numbers(a, b):
if (a == b):
print("same")
else:
print(*list(range(a, b, (1 if a<b else -1))))
测试:
range_of_numbers(2, 8)
range_of_numbers(18, 11)
range_of_numbers(42, 42)
您肯定会获得所需的输出:
2 3 4 5 6 7
18 17 16 15 14 13 12
same