Python文字游戏

时间:2013-09-25 15:20:37

标签: python python-2.7

我正在尝试制作一个文本游戏,它将从一个计时器开始,每隔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]),

这是我试过的代码,但我只是输了,不知道如何继续。关于如何使这项工作的任何想法?

5 个答案:

答案 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个选项,从大多数到最少的副作用:

  • 切换到python3,它使用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)):

那将遍历字符串。