мой python не возвращает 3,4,5,6,7 кажется, что он не работает - PullRequest
1 голос
/ 03 мая 2020
    def number_range(num1,num2):
         list1=[]
        for i in range(num2-num1):
            num1 = num1+1
            list1.append(num1)
        return list1


 number_range(2,8)

Я хочу, чтобы python вернул 3,4,5,6,7, но мой код просто не работает. Кто-нибудь может мне помочь?

Ответы [ 4 ]

0 голосов
/ 03 мая 2020
def number_range(num1,num2):
    list1=[]
    for i in range(num2-num1):
        num1 = num1+1
        list1.append(num1)
    return list1


print(number_range(2,8))

Приведенный выше фрагмент дает вам [3, 4, 5, 6, 7, 8], но вы увидите *1002*. Может быть, вам нужно один раз проверить синтаксис range(start,end,step), который может решить вашу проблему.

def number_range(num1,num2):
    list1=[]
    diff = num2-num1
    end = diff+1
    for i in range(num1, diff+1):
        num1 = num1+1
        list1.append(num1)
    return list1


print(number_range(2,8))

Вывод

[3, 4, 5, 6, 7]

Если вы хотите sh сделать что-то другое, сообщите нам подробнее о ваших требованиях, чтобы его можно было изменить таким образом.

0 голосов
/ 03 мая 2020

если диапазон имеет только 1 параметр, он всегда будет начинаться с 0. Ваш код будет генерировать числа от 0 до 8 - 2 или 6

>>> range(8 - 2) == range(6)
True
>>> range(8-2)
range(0, 6)
>>> list(range(6))
[0, 1, 2, 3, 4, 5]

То, что вы хотите, начинается с 2 и заканчивается на 8 Вы должны использовать 2 параметра, один для начальной точки, другой для конца

>>> range(3, 8)
[3, 4, 5, 6, 7]

в вашем примере

def number_range(num1,num2):
    list1=[]
    for i in range(num1+1, num2):
        list1.append(i)
    return list1

Затем вы можете вызвать свою функцию и распечатать вывод

print(number_range(2,8))

И вы увидите в своем терминале

[3, 4, 5, 6, 7]
0 голосов
/ 03 мая 2020

Если вы хотите, чтобы ваш код печатал выходные данные вызова функции, вам придется изменить последнюю строку следующим образом:

print(number_range(2,8))

Кроме того, выходные данные вашей функции для этого входа будут [3 , 4, 5, 6, 7, 8]. Как они сказали вам, то, как вы использовали range (), вообще не распространено и может быть изменено стандартом (first, last + 1).

Если вы действительно хотите использовать range (), то Кстати, это в основном range () с одним параметром, вам нужно сделать это следующим образом, вычтя 1:

def number_range(num1,num2):
list1=[]
for i in range(num2-num1-1):
    num1 = num1+1
    list1.append(num1)
return list1


print(number_range(2,8))
[3, 4, 5, 6, 7]

В любом случае, пока я писал этот ответ, Shazers предоставил реализацию используя стандартный синтаксис, и я настоятельно рекомендую его решение над моим. Используйте эту функцию, только если вы использовали range () с вычитанием по определенной причине, которую вы не комментировали.

0 голосов
/ 03 мая 2020

Вы просто вызываете функцию, но не выводите ее результаты на консоль.

def a():
    return 1
a()

ничего не сделает. Если вы хотите, чтобы результаты выводились на консоль, вам нужно позвонить

print(a())

, чтобы получить результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...