[英]Python: display dynamic information on user input
我希望能够以python脚本接收用户的命令行输入,并同时向用户显示一些动态信息。 用户应该能够输入文本,但是这不会阻止信息的显示。
我的目标是创建一个游戏,向用户展示倒计时,同时他们还有时间输入答案。
这可以实现吗?
是的 要在控制台中创建倒计时,您可以执行以下操作:
from time import sleep
for num in reversed(range(0,11)):
print(num)
sleep(1.0)
要么
from time import sleep
time = 10
while time != 0:
print(time)
time = time - 1
sleep(1.0)
两者都会从10倒数到0,并且每个数字之间要间隔一秒。 因为您可能希望用户能够像到达0之前一样快速或缓慢地输入答案,所以您可能希望同时运行两个循环。 该线程可能对此有所帮助。 您将想弄清楚如果用户得到正确的答案(并且出现提示他们获得正确答案的信息)或用户时间用完了,如何从两个循环中脱颖而出。
听起来像是一件有趣的事情,所以我做了一下,很快就遇到了一些问题。
首先,我能够制作一个正在运行的计数器,但问题是,由于它是一个循环,因此计数器循环的下一层将重置您在上一层已回答的所有内容,除非您按Enter键输入答案(答案+在1秒钟内输入)。
如果您要制作基于反射的东西,而只需要按一下单个键,则可以使用模块getch来成功实现我的代码。
我很少使用模块来使计时器和程序同时运行,线程化和多处理(线程化的结果更好)。
如果仅删除添加了循环的计数器功能,这基本上是一件工作,但是看不到计时器。
Pygame可能是一件好事,我自己没有使用过,但我认为是这样。
import time
import threading
import os
timel = 5
def question():
q = input("",)
print(q)
if q == "2":
print("\nCorrect")
else:
exit("\nFalse, You lose!!")
def counter():
timel = 5
for i in range(0, timel):
print("How much is 1+1?", timel)
timel -= 1
time.sleep(1)
os.system("cls")
def timer(seconds):
time.sleep(seconds)
exit("\nTIMES UP, You lose!!")
def exit(msg):
print(msg)
os._exit(1)
def main():
thread = threading.Thread(target=timer, args=(int("{}".format(timel)),))
thread2 = threading.Thread(target=counter)
thread.start()
thread2.start()
question()
if __name__ == "__main__":
main()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.