如何通过输入/答案在 Python 中产生打字效果?

Posted

技术标签:

【中文标题】如何通过输入/答案在 Python 中产生打字效果?【英文标题】:How to have typing effect in Python with inputs/answers? 【发布时间】:2020-12-01 10:47:10 【问题描述】:

我是新手,在 Python 编程方面经验很少,如果我的术语不正确,请纠正我。

我看到过有关typing effect in Python 的帖子。但我也想在需要你回答或输入内容的脚本中使用这种效果,比如那些选择你自己的冒险游戏。例如:

answer = input("You reach a cros-s-road, would you like to go left or right?").lower().strip()
if answer == 'left':
     answer = input('You encounter a monster, would you like to run or attack?')
elif answer == 'right':
     answer = input('You walk aimlessly to the right and fall on a patch of ice.')

我怎么会有这样的东西有打字效果?

【问题讨论】:

你的意思是用户的输入会产生效果(当用户键入时),还是提示?如果是后者,为什么链接没有回答您的问题? 【参考方案1】:

您可以为打字效果定义一个函数,如下所示:

import sys
import time

def type_effect(string, delay):
    for char in string:
        time.sleep(delay)
        sys.stderr.write(char)

然后每次想用效果的时候用它:)

type_effect('You reach a cros-s-road, would you like to go left or right?', 0.1)
answer = input().lower().strip()
if answer == 'left':
    type_effect('You encounter a monster, would you like to run or attack?', 0.1)
    answer = input()
elif answer == 'right':
    type_effect('You walk aimlessly to the right and fall on a patch of ice.', 0.1)
    answer = input()

或者,您甚至可以定义一个使用类型效果并返回用户输入的函数,如下所示:

import sys
import time

def type_effect_and_input(string, speed):
    for char in string:
        time.sleep(speed)
        sys.stderr.write(char)
    return input().lower().strip()

answer = type_effect_and_input('You reach a cros-s-road, would you like to go left or right?', 0.1)
if answer == 'left':
    answer = type_effect_and_input('You encounter a monster, would you like to run or attack?', 0.1)
elif answer == 'right':
    answer = type_effect_and_input('You walk aimlessly to the right and fall on a patch of ice.', 0.1)

【讨论】:

我需要更多信息。每次想用效果的时候怎么用?我将如何在我发布的示例的上下文中使用它? 哦,我明白了,您想同时获得输入和使用打字效果!好的,更新了答案以包括实现此目的的两种方法:) @wowsocool【参考方案2】:

这就是你的做法。我将包含在一个名为 textutils 的模块中 从时间导入睡眠

def slow_print(text, waitTime=0.05):
    for x in text:
        print(x, end='')
        sleep(waitTime)

slow_print("You reach a cros-s-road, would you like to go left or
right?")
answer = input("").lower().strip()
if answer == 'left':
     slow_print('You encounter a monster, would you like to run or attack?')
     answer = input('')
elif answer == 'right':
     slow_print('You walk aimlessly to the right and fall on a patch of ice.')
     answer = input()

【讨论】:

这个答案与另一个答案有何不同?好像是重复的……

以上是关于如何通过输入/答案在 Python 中产生打字效果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql中产生随机的十六进制颜色?

当任何数学运算在 .net 4 中产生“NaN”时,如何强制 C# 编译器抛出异常?

在fortran 90/95中产生声音/哔哔声

python 在蟒蛇中产生诗歌

有没有办法查看哪一行代码在 python 中产生警告消息?

简单的聊天机器人在Anaconda / Python中产生错误