Python大写和取消大写动画

2024-03-28 09:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python做一种文本动画。 如果您使用了Metasploit,则在加载过程中会出现一个文本波 例子: 弗斯特 第一 第一 第一 第一 (所有内容都将在同一条线上) 我在想用系统标准输出写入(“”)但我不能代替 最后一个符号在大写后用小写字母放下来。在

# This version is fixed and works
import sys, time
lowerstr = "buffering"
upperstr = lowerstr.upper()
for x in range(len(lowerstr)):
     s = '\r' + lowerstr[0:x] + upperstr[x] + lowerstr[x+1:] + '\r'
     sys.stdout.write(s)
     sys.stdout.flush()
     time.sleep(0.1)

Tags: 文本内容标准time过程系统stdoutsys
3条回答

使用ios pythonista场景实现此动画

import scene

label_text = 'abcdefghijklmnopqrstuvwxyz'

def custom_action(node, progress):
    ntext = node.text
    i = int(len(ntext)*progress)
    iminus1txt = ntext[i-1].lower() if i > 0 else ''
    ithtxt = ntext[i].capitalize() if i < len(ntext) else ''
    if i > 0:
        before_i = ntext[:(i-1)]
    else:
        before_i = ''
    if i < len(ntext):
        node.text = before_i+iminus1txt+ithtxt+ntext[(i+1):]
    else:
        node.text = label_text

class TextCapitalAnimate(scene.Scene):
    def setup(self):
        center = self.bounds.center()
        labelnode = scene.LabelNode(label_text, font=('Courier', 20),
                                position=center, parent=self)
        A = scene.Action
        animate_action = A.repeat(A.call(custom_action, 2), 0)
        labelnode.run_action(animate_action)

scene.run(TextCapitalAnimate())
import sys
import time

data = ["b","u","f","f","e","r","i","n","g"]

# display with one upper char

for x in range(len(data)):
    # remeber lower char
    old = data[x]

    # replace with upper char
    data[x] = old.upper()

    # create full text
    text = "".join(data)

    # display full text
    sys.stdout.write("\r")
    sys.stdout.write(text)
    sys.stdout.flush()

    # put back lower char
    data[x] = old

    time.sleep(1)

# display without upper chars at the end 

text = "".join(data)

sys.stdout.write("\r")
sys.stdout.write(text)
sys.stdout.flush()

如果你不需要把多余的代码放在cd2}后面。在

您也可以在开始处放置空字符串,以显示第一个不带大写字符的文本。在

^{pr2}$

这个版本组合了字符串,而不仅仅是迭代每个字符。您可以通过在适当的字符上使用.upper()来删除{}。注意,不应该使用list作为变量名,因为它是Python内置的。在

import sys
import time

lowerstr = "buffering"
upperstr = lowerstr.upper()
for x in range (len(lowerstr)):
    s = lowerstr[0:x] + upperstr[x] + lowerstr[x+1:] + '\r'
    sys.stdout.write(s)
    sys.stdout.flush()
    time.sleep(1)

相关问题 更多 >