簡體   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