В поисках диапазона - PullRequest
0 голосов
/ 10 ноября 2018

Привет, так что для домашней работы я должен напечатать программу, в которой она будет принимать два числа. Если одно из чисел слева меньше, чем справа, оно будет увеличиваться. Если второе число меньше первого, оно будет уменьшаться. Если оба числа одинаковы, то они должны оставаться одинаковыми. Вот программа, которую я написал до сих пор:

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 голосов
/ 10 ноября 2018

Во-первых, то, что вы делаете с вашими первыми двумя делами, является своего рода «обманом» и так называемыми «жесткими» результатами. Вы не пишете функцию для выполнения задачи, а просто печатаете ответы, которые, как вы знаете, должны видеть.

По иронии судьбы, вы здесь довольно близки.

Это должно делать то, что вы хотите:

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, и мы хотим включить оба конца здесь). Затем мы либо считаем, либо считаем вниз, в зависимости от того, что выше.

0 голосов
/ 10 ноября 2018

Используйте 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
...