最近,我读到有关如何在Python中一次键入一个字母,以使人看起来既守旧又使用循环和时间很酷的方法-但是,我的代码有输入。有谁知道该怎么做并输入(在我的代码中,“你叫什么名字?”)
我尝试更改输入名称,但失败。代码像往常一样简单地一次打印出来
答案 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)
如果您要执行以下操作:
那么最简单的方法就是像过去那样做。然后发生的事情是该程序将向终端发送特殊代码(当时这是一个真正的物理设备,而不仅仅是一个窗口),并且终端将执行所需的任何代码。有一些用于移动光标,更改颜色,发出蜂鸣声和许多其他您需要的漂亮东西的代码。
今天仍在使用的一组常见代码称为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)
希望这是您想要的。