如何通过输入/答案在 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 中产生打字效果?的主要内容,如果未能解决你的问题,请参考以下文章