1

我正在尝试制作一个文本游戏,它将从一个计时器开始,该计时器每 0.05 秒添加 1 个字母以形成一个字符串,因此看起来有人正在输入一个句子。

前任。“你好,这是一个测试”会从 h 然后 e 然后 l 然后 l 然后 o 开始,在行上打印的字母之间有一个时间段。

import time
string = "Hello, this is a test"
count=1
while count >0:
    time.sleep(0.05)
    print(string[:1]),

那是我尝试过的代码,但我只是迷路了,不知道如何继续。关于如何完成这项工作的任何想法?

4

5 回答 5

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 个选项,按副作用从多到少的顺序排列:

  • 切换到 python3,它print作为一个函数使用end,您可以将其设置为空字符串;
  • from __future__ import print_function这将为您提供相同的打印功能,而无需 python3 中的所有其他警告;
  • 替换printsys.stdout.write()。这个函数是 print 默认环绕的
于 2013-09-25T15:32:41.207 回答
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
于 2013-09-25T15:23:16.633 回答
1

尝试这样的事情:

import time
string = "Hello, this is a test"
count=1
for i in string:
    time.sleep(0.05)
    print(i)
于 2013-09-25T15:26:56.577 回答
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...
于 2013-09-25T16:20:40.103 回答
0

您可能想用类似的东西替换“while”

for i in range(len(string)):

这将遍历字符串。

于 2013-09-25T15:23:21.290 回答