Почему я получил в 3 раза больше ничего в моем коде? - PullRequest
0 голосов
/ 25 сентября 2019

Так что я тренируюсь с программированием на python.Я всегда использую оператор возврата, если мне нужно вернуть число, поэтому я не получаю ничего.Но теперь, когда я просто хочу распечатать комментарий, он ничего не возвращает.Даже когда я пытаюсь использовать оператор return, он возвращает none.

def name_tag():
    name = input("Hello, whats your name? : ")
    print(f'Hi {name}, would you like to play a game?')
    print(y_n())

def y_n():
    yes_no = input("Y/N: ")

    if yes_no.lower() == 'y':
        print('Cool, than lets play a game')

    elif yes_no.lower() == 'n':
        print('To bad!')

    else:
        print('Please anwser with [y] or [n]')
        print(y_n())

Это вывод

Hello, whats your name? : jop
Hi jop, would you like to play a game?
Y/N: k
Please anwser with [y] or [n]
Y/N: y
Cool, than lets play a game
None
None
None

Ответы [ 3 ]

2 голосов
/ 25 сентября 2019
print(y_n())

печатает возвращаемое значение функции y_n.Это значение неявно None, так как функция ничего не возвращает.

1 голос
/ 25 сентября 2019

Вы печатаете результаты y_n(), то есть None попробуйте это:

def name_tag():
    name = input("Hello, whats your name? : ")
    print(f'Hi {name}, would you like to play a game?')
    y_n()

def y_n():
    yes_no = input("Y/N: ")

    if yes_no.lower() == 'y':
        print('Cool, than lets play a game')

    elif yes_no.lower() == 'n':
        print('To bad!')

    else:
        print('Please anwser with [y] or [n]')
        y_n()

Если вы хотите использовать print(y_n()), вы можете изменить его, чтобы вы возвращали строки из y_n():

def name_tag():
    name = input("Hello, whats your name? : ")
    print(f'Hi {name}, would you like to play a game?')
    print(y_n())

def y_n():
    yes_no = input("Y/N: ")

    if yes_no.lower() == 'y':
        return 'Cool, than lets play a game'

    elif yes_no.lower() == 'n':
        return 'To bad!'

    else:
        print('Please anwser with [y] or [n]')
        return y_n()
0 голосов
/ 25 сентября 2019

Ваш код выводит None, потому что вы вызываете print(y_n()), который печатает возвращаемое значение функции y_n(), равной None.Что вы должны сделать, это вызвать функцию без использования print(), поскольку выходное значение уже печатается внутри функции.

...