繁体   English   中英

Python:在用户输入上显示动态信息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM