python基础-设计滚动字幕(方向,速度可选,回车符实现清除屏幕效果)

设计一个可以选择滚动方向,滚动速度的实现字幕滚动功能的程序。本程序是基于一些类似的程序的扩展和修改。
滚动的实现(核心):

  1. 将字幕作为列表做切片操作切头补尾即可实现左滚,切尾补头实现右滚
  2. 使用回车操作 \r 符实现清除屏幕的效果
    关于回车和换行符的理解推荐两篇文章:
    https://www.cnblogs.com/zzliu/p/10156658.html
    https://www.cnblogs.com/yc3110/p/10809564.html

程序代码:

def roll_titles():
    import time
    adv = input("请输入一段广告语:")

    # 获取滚动方向
    while 1:
        fx = input("请输入滚动的方向(L/R)").upper()  # .upper()转换为大写
        if fx in ['L', 'R']:
            break
        print("您的输入有误,请重新输入!")

    # 获取滚动速度
    while 1:
        sd = input("请输入滚动的速度(请输入一个整数,值越大,滚动速度越快):")
        if sd.isnumeric():
            break
        print("您的输入有误,请重新输入!")

    # 产生滚动效果
    if fx == 'R':  # 右滚
        adv = adv[1:] + adv[0]  # 这样先反向左移一位,使得第一个显示的句子是正常的,否则第一个字已经被移到最后了
        while 1:
            adv = adv[-1] + adv[:-1]  # 切尾补头 实现右滚
            print('\r' + adv, end=' ')    # 回车操作实现刷新显示
            # 原计划使用os.system('cls'),但是不起作用,最后在网上找到了上述方法
            time.sleep(1 / (int(sd)))  # 这种写法使得sd值越大,滚动速度越快

    if fx == 'L':  # 左滚
        adv = adv[-1] + adv[:-1]   # 先反向右右移一位
        while 1:
            adv = adv[1:] + adv[0]  # 切头补尾 实现左滚
            print('\r' + adv, end=' ')
            time.sleep(1 / (int(sd)))


if __name__ == '__main__':
    roll_titles()

左滚演示:速度为1(换算后就是暂停显示1秒)
python基础-设计滚动字幕(方向,速度可选,回车符实现清除屏幕效果)_第1张图片

右滚演示:速度为3(暂停显示0.333秒),控制台窗口这个刷新率有点低,看起来跟掉帧一样
python基础-设计滚动字幕(方向,速度可选,回车符实现清除屏幕效果)_第2张图片

你可能感兴趣的:(python)