为什么我的代码输出 none 是原来的 3 倍?

why do i got 3 times the output none in my code?

所以我正在 python 练习编码。如果我需要 return 一个数字,我总是使用 return 语句,这样我就不会得到 none。但是现在当我只想打印评论时 returns none。即使我尝试使用 return 语句,它 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

您正在打印 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()
print(y_n())

打印 y_n 函数的 return 值 。该值隐式 None 因为该函数没有 return 任何东西。

您的代码输出 None 因为您调用 print(y_n()) 打印 y_n() 函数的 return 值 None。你应该做的是在不使用 print() 的情况下调用函数,因为输出值已经在函数内部打印。