为了账号安全,请及时绑定邮箱和手机立即绑定

寻找范围。

寻找范围。

慕婉清6462132 2021-08-14 13:40:53
所以对于家庭作业,我必须输入一个程序,它可以接受两个数字。如果左边的数字之一小于右边的数字,它将增加。如果第二个数字小于第一个数字,则它会减少。如果两个数字相同,那么它应该保持不变。这是我到目前为止编写的程序: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 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

首先,您对前两个案例所做的事情有点“作弊”,也就是所谓的“硬编码”结果。您不是在编写函数来执行任务,而只是打印您知道应该看到的答案。


但具有讽刺意味的是,你离这里很近。


这应该做你想做的:


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 循环(+1,因为我们的索引为 0 并且我们想在此处包含两端)。然后我们要么向上计数,要么向下计数,这取决于哪个更高。


查看完整回答
反对 回复 2021-08-14
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

使用 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


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信