Почему вывод продолжает возвращать последнее значение «Нет»? - PullRequest
0 голосов
/ 29 мая 2020
def range_test(start, end):
    while start <= end:
        print(start)
        start+=1

print(range_test(1,5))

Вывод:

1
2
3
4
5
None

Process finished with exit code 0

Ответы [ 3 ]

3 голосов
/ 29 мая 2020

Вы говорите напечатать результат range_test, но вы не возвращаете никакого значения.

Чтобы исправить это, просто удалите печать и запустите range_test(1, 5).

2 голосов
/ 29 мая 2020

None в конце - это None, возвращаемое range_test. Измените его на:

def range_test(start, end):
    while start <= end:
        print(start)
        start+=1

range_test(1,5)  # this function already prints, no need to print its return

или, если вы предпочитаете, чтобы range_test возвращал что-то, что вы можете распечатать (вместо того, чтобы выполнять саму печать и ничего не возвращать), выполните:

def range_test(start, end):
    to_print = ""
    while start <= end:
        to_print += f"{start}\n"
        start+=1
    return to_print

print(range_test(1,5))
1 голос
/ 29 мая 2020

Вы не определяете значение return в своем коде, поэтому по умолчанию он возвращает None. Вызов print(func) печатает возвращаемое значение. Он будет отображаться нормально, если вы выполните одно из следующих действий:

def range_test(start, end):
    while start <= end:
        print(start)
        start+=1

range_test(1,5)

def range_test(start, end):
    range_list = []
    while start <= end:
        range_list.append(start)
        start+=1
    return "\n".join(range_list)
range_test(1,5)
...