寻找范围

时间:2018-11-10 20:10:06

标签: python for-loop if-statement while-loop range

嗨,所以我要写作业,以便输入两个数字。如果左边的数字之一小于右边的数字,它将增加。如果第二个数字小于第一个数字,它将减少。如果两个数字相同,则应保持相同。这是我到目前为止编写的程序:

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) 我把它们中的两个弄对了,但是最后一个总是输出错误,我不知道是什么错误或在哪里解决错误。

2 个答案:

答案 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