Python 如何使print()和input()中的文本逐个显示?

Python 如何使print()和input()中的文本逐个显示?,python,text,Python,Text,就像一个RPG游戏一样,我想让文本看起来就像有人在打字一样。我知道如何在python中使用print()函数,包括sleep()和sys.stdout.flush 在输入函数之前如何处理文本 例如,我想输入您的名字,然后用户输入他的名字。您可以使用以下方法: text = 'What is your name? ' for x in text: sys.stdout.write(x) sys.stdout.flush() time.sleep(0.00001) name = i

就像一个RPG游戏一样,我想让文本看起来就像有人在打字一样。我知道如何在python中使用print()函数,包括sleep()和sys.stdout.flush

在输入函数之前如何处理文本

例如,我想输入您的名字,然后用户输入他的名字。

您可以使用以下方法:

text = 'What is your name? '
for x in text:
   sys.stdout.write(x)
   sys.stdout.flush()
   time.sleep(0.00001)
name = input()
您还可以随机化每个循环的睡眠时间,以便更好地模拟键入,如下所示:

import time,sys,random
text = 'What is your name? '
for x in text:
   sys.stdout.write(x)
   sys.stdout.flush()
   time.sleep(random.uniform(.000001, .000019))
name = input()
正如Tomerikoo指出的,有些系统的延迟更快/较慢,因此您可能需要在另一个系统上使用统一的(.01,.5)。我使用OS/X

在windows上,这可能效果更好。谢谢托梅里库:

import time,sys,random
text = 'What is your name? '
for x in text:
   print(x, end="", flush=True)
   time.sleep(random.uniform(.000001, .000019))
   # or smaller sleep time, really depends on your system:
   # time.sleep(random.uniform(.01, .5))
name = input()

您可以使用以下代码:

import time,sys

def getinput(question):
    text = input(question)
    for x in text:
        sys.stdout.write(x)
        sys.stdout.flush()
        time.sleep(0.00001) #Sets the speed of typing, depending on your system

现在,每次调用
getinput(“示例问题”)
,您都会根据传递给函数的问题获得用户的输入。

您对
input
函数的意思是什么?用户输入的文本无法控制其速度。如果您指的是
输入的消息
,只需单独打印,然后使用
输入()
我不完全理解这个问题。您想对输入函数做什么?对于
end
参数,只需在循环中使用
'
一次打印一个字符,那么循环后面的行将是
input()
,没有提示。对不起,输入函数前面的文本,如x=input('您的名字是什么?')
print(“您的名字是什么?”)
然后是
x=input()
这取决于您的系统,您肯定需要使用这些值。例如,我在mac电脑上,实时打印也可以是
print(x,end=“”,flush=True)
,而不是
sys
呼叫感谢应答。这个输入命令是否也适用于其他问题?每次问新问题时,我都需要做def吗?我已经更新了我的问题。现在使用
getinput(“问题”)
。调用函数时传递的任何问题都将打印出来