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