延迟文本时输出以 none 结束

Output ends in none when delaying text

我正在尝试制作一款基于文本的冒险游戏。我是 Python 的新手 我正在尝试像旧游戏一样延迟文本。

from time import sleep
import sys
def de(string):
    for c in string:
        print(c, end='')
        sys.stdout.flush()
        sleep(0.1)

在整个代码中,执行以下操作:

print(de("\nPlayer health: "), player_health,)

user_fighter = input(de("what is the name of your fighter?"))

输出总是以"None"

结尾

例如
Player health: None 100

我该如何解决这个问题?

您的 de 函数不 return 任何东西,因此 return 值为 None。此外,您在函数中已经有一个 print 可以执行您要执行的操作。因此,您可以直接调用 de 函数,而不是在 print.

中调用它

代码

from time import sleep
import sys
def de(string):
    for c in string:
        print(c, end='')
        sys.stdout.flush()
        sleep(0.1)
# ...
# Code
# ...

de("\nPlayer health: ")
print(player_health)

输出

Player health: 100

"Player health"是一个字母一个字母显示的,后面的值一次显示。

有两个功能怎么样。一个输出文本,另一个输出文本但 returns 用户输入。

from time import sleep
import sys

def de(string, end='\n'):
    for c in string:
        print(c, end='')
        sys.stdout.flush()
        sleep(0.1)
    print(end,end='')

def de_input(string):
    de(string, end='')
    return input()

de("Welcome to game")
name = de_input("What is your name?")

de("Welcome %s" % name)