打字机对列表的影响

Typewriter Effect on a list

提问人:Tokyn Blast 提问时间:10/17/2023 最后编辑:Tokyn Blast 更新时间:10/17/2023 访问量:87

问:

我正在制作游戏的基础,对于介绍,我需要它像打字机一样打印出来。当我称它为多个时,它会打印出整个对象,而不是像打字机那样缓慢地打印出来

import random
import sys
from time import sleep

test_list = ['obj 1', 'obj 2']

def writer(text, multi = True):
    if multi == True:
        obj = 0
        for item in text:
            sleep(1)
            sys.stdout.write(text[obj])
            
            obj += 1
            sys.stdout.flush()
    
    else:
        for char in text:
            sleep(0.05)
            sys.stdout.write(char)
            sys.stdout.flush()

writer(test_list)
python list sys 效果

评论

2赞 John Gordon 10/17/2023
您正在调用 ,但该变量实际上被命名为 ,而不是 。这显然不是你的真实代码。请发布您的真实代码。writer(test_lists)test_listtest_lists
0赞 Tokyn Blast 10/17/2023
不是这样,我修改了代码,让它更简单,有 1 个列表,还有一个字符串,原来的列表有很多对象
0赞 John Gordon 10/17/2023
如果您不愿意更新问题以包含您的真实代码,那么祝您好运。

答:

0赞 Ömer Sezer 10/17/2023 #1

添加了“for char in item”,删除了“obj”,为漂亮的打印机添加了“sys.stdout.write('\n')”。

法典:

import random
import sys
from time import sleep

test_list = ['obj 1', 'obj 2']

def writer(text, multi=True):
    if multi:
        for item in text:
            for char in item:
                sleep(0.5)  # <= adjust how many secs to wait for
                sys.stdout.write(char)
                sys.stdout.flush()
            sys.stdout.write('\n')  
    else:
        for char in text:
            sleep(1)   # <= adjust how many secs to wait for
            sys.stdout.write(char)
            sys.stdout.flush()
        sys.stdout.write('\n')  

writer(test_list)

评论

0赞 mkrieger1 10/17/2023
你做了什么改变,为什么它解决了这个问题?
0赞 Ömer Sezer 10/17/2023
我用我所做的事情更新了帖子。我意识到我们(与其他用户)同时回答了它。
0赞 mkrieger1 10/17/2023
为什么删除会增加打字机效果?obj
0赞 Anna Andreeva Rogotulka 10/17/2023 #2

你错过了字符串中每个符号的内部 -for char in item:

import random
import sys
from time import sleep

test_lists = ['obj 1', 'obj 2']


def writer(text, multi = True):
    if multi == True:
        obj = 0
        for item in text:
            for char in item:
                
                sys.stdout.write(char)
                obj += 1
                sys.stdout.flush()
                sleep(1)
                
    
    else:
        for char in text:
            sleep(0.05)
            sys.stdout.write(char)
            sys.stdout.flush()

writer(test_lists)