我正在尝试制作一个文本游戏,它将从一个计时器开始,每隔0.05秒就会添加1个字母组成一个字符串,所以看起来有人正在输入一个句子。
实施例。 “你好,这是一个测试”将以h然后然后是l然后然后是o开始,在这些字母被打印出来之间有一段时间。
import time
string = "Hello, this is a test"
count=1
while count >0:
time.sleep(0.05)
print(string[:1]),
这是我试过的代码,但我只是输了,不知道如何继续。关于如何使这项工作的任何想法?
答案 0 :(得分:6)
将while
循环替换为for
循环,迭代要打印的字符串。那将依次给你每个字母,并在结束时停止你的循环。我还建议将此行为放在这样的函数中:
def typeText(text, delay=0.05):
for character in text:
print character,
time.sleep(delay)
typeText("Hello, this is a text")
要解决空间问题,您可以选择3个选项,从大多数到最少的副作用:
print
作为函数,并将end
参数设置为空字符串; from __future__ import print_function
,它将为您提供相同的打印功能,而不需要python3的所有其他注意事项; print
替换为sys.stdout.write()
。此功能默认打印包装答案 1 :(得分:2)
这是做到这一点的方法,
编辑:由于OP在打印每个字符后不需要空格,所以我设置end=''
import time
string = "Hello, this is a test"
count=0
while count<len(string):
time.sleep(0.05)
print (string[count],end='')
count = count+1
答案 2 :(得分:1)
尝试这样的事情:
import time
string = "Hello, this is a test"
count=1
for i in string:
time.sleep(0.05)
print(i)
答案 3 :(得分:1)
您的代码不起作用(因为您希望它能够正常工作),因为那里有无限循环。
您可以这样写(就像改进现有代码一样):
import time
string = "Hello, this is a test"
count = len(string)
while count > 0:
time.sleep(0.05)
print(string[:1]),
count -=1
但这是不是Pythonic 。
这里唯一正确的方法就是像这样编码:
import time
string = "Hello, this is a test"
for letter in string:
time.sleep(0.05)
print letter
这也是不 Pythonic:
for i in range(len(string)):
# Do something...
答案 4 :(得分:0)
您可能希望将“while”替换为
之类的内容for i in range(len(string)):
那将遍历字符串。