Python:显示有关用户输入的动态信息

时间:2017-12-11 19:18:37

标签: python command-line

我希望能够在python脚本中接收来自用户的命令行输入,同时向用户显示一些动态信息。 用户应该能够输入文本,但这不应该阻止信息的显示。

我的目标是创建一个游戏,我会在用户有时间输入答案时向用户显示倒计时。

这可以实现吗?

2 个答案:

答案 0 :(得分:0)

呀。要在控制台中创建倒计时,您可以执行以下操作:

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之前快速或缓慢地输入答案...您可能希望同时运行两个循环。 this thread可能对此有所帮助。如果用户得到正确的答案(并且有一些东西表明他们得到了正确的答案),或者如果用户没时间用完,你将想知道如何摆脱两个循环。

答案 1 :(得分:0)

听起来像是一个有趣的事情,所以我做了,很快遇到了一些问题。

首先,我能够制作一个正在运行的计数器,但问题是,因为它是一个循环,下一层计数器循环将重置你在前一层上回答的所有内容,除非你按下输入输入答案(在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()