如何在Python中一次输入一个字母

时间:2019-05-02 19:12:43

标签: python

最近,我读到有关如何在Python中一次键入一个字母,以使人看起来既守旧又使用循环和时间很酷的方法-但是,我的代码有输入。有谁知道该怎么做并输入(在我的代码中,“你叫什么名字?”)

我尝试更改输入名称,但失败。代码像往常一样简单地一次打印出来

3 个答案:

答案 0 :(得分:0)

如果我正确理解您的要求,则可以打印每个字母并在末尾使用输入内容。 像这样:

output = "what is your name?"

for i in output:
    print(i, end='')
x = input()

x将是包含用户输入内容的字符串。
恕我直言,这并不酷,只是多余。

如果您希望在每个字母的显示之间有延迟,请使用time模块。

import sys
import time
output = "what is your name?"

for i in output:
    print(i, end='')
    sys.stdout.flush()
    time.sleep(0.1)
x = input()

请注意使用sys.stdout.flush()将每个字母立即推送到输出中。

答案 1 :(得分:0)

这看起来就像你在说什么

import time

output = "what is your name?"
blank = ""


for i in output:
    blank = blank + i
    print("\r"+blank, end='')
    time.sleep(0.1)
x = input()

这个想法是建立越来越大的输出部分,并使用\ r每次替换控制台中的行。循环之间等待0.1秒会增加效果

答案 2 :(得分:0)

如果您要执行以下操作:

Demo

那么最简单的方法就是像过去那样做。然后发生的事情是该程序将向终端发送特殊代码(当时这是一个真正的物理设备,而不仅仅是一个窗口),并且终端将执行所需的任何代码。有一些用于移动光标,更改颜色,发出蜂鸣声和许多其他您需要的漂亮东西的代码。

今天仍在使用的一组常见代码称为ANSI escape codes

有一个出色的Python软件包Colorama,它可以完成所有繁重的工作并且是跨平台的。我建议使用它。

上面的演示的源代码:

from colorama import init, Fore, Style
import time

def print_old(message):
    print(Fore.GREEN, end='', flush=True)
    for c in message:
        print(c, end='', flush=True)
        time.sleep(0.1)
    print(Style.RESET_ALL, end='', flush=True)

init()
print_old('What is your name? ')
name = input()
print_old('Nice to meet you %s\n' % name)

希望这是您想要的。