【问题标题】:Finding the Range寻找范围
【发布时间】:2018-11-10 20:10:05
【问题描述】:

您好,对于家庭作业,我必须输入一个程序,它可以接受两个数字。如果左边的数字之一小于右边的数字,它将增加。如果第二个数字小于第一个数字,它将减少。如果两个数字相同,那么它应该保持不变。这是我到目前为止编写的程序:

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) 我有两个是正确的,但最后一个总是得到错误的输出,我不知道哪里错了,或者哪里出错了。

【问题讨论】:

  • 所以你必须返回硬编码的值?
  • '如果两个数字相同,那么它应该保持相同'我不确定你的意思是什么?
  • 是的,给定的值,我必须返回它们。所以我必须输入一个打印语句,显示数字上升,一个下降,最后一个相同
  • 基本上对于样本来说是 45、45。由于这两个是相同的,因此打印语句必须相同。但是,如果它像 2、8 这样出来,左边的数字比右边的数字小,所以它会随着上升而增加。如果是相反的 (8, 2),这个数字会减少并下降。
  • @ChristianLLanos 您对 (2, 8)、(18, 11) 和 (42, 42) 的预期输出是什么?我的答案输出的哪一部分是错误的?

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


【解决方案1】:

首先,您在前两个案例中所做的是一种“作弊”,即所谓的“硬编码”结果。您不是在编写函数来执行任务,而是在打印您知道应该看到的答案。

讽刺的是,你离这里很近。

这应该做你想做的:

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 索引并且我们希望在此处包括两端)。然后我们要么向上计数,要么向下计数,这取决于哪个更高。

【讨论】:

  • 你能说是什么不工作吗?你期望你没有得到什么结果?我确实相信上面的代码可以满足您在原始问题中的要求。请确认您的问题是正确的
  • 所以范围没有正常工作,我在 (2, 8) 上得到的第一个响应是在开始时给我 0 时它不应该。它也类似于第二个(18、11)。它不应该从 11 点开始。
  • 您是否准确复制了代码?我正在运行完全相同的代码,并且得到了您要求的结果。
  • 是的,复制了整件事
  • 我不知道该告诉你什么,只能创建一个新文件并重试。我没有得到你看到的结果
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多