我对Python很陌生,我想编写一些关于谁想成为百万富翁的模因副本的代码,我想要一个将启动的计时器,然后在30秒后如果没有给出答案将退出程序。我不知道该怎么做,我需要帮助
因此,我尝试了多个指南和其他具有相同标题答案的问题,但没有成功。 这是代码(请不要看和谈论俄语)
import time
import pygame
from tkinter import ttk
from playsound import playsound
import winsound
from pygame import mixer
mixer.init()
pygame.mixer.Channel(0).play(pygame.mixer.Sound('bgsong.mp3'))
print('Я устроил ВИКТОРИНУ людей нуждающихся в деньгах!И победитель сегодняшеного шоу получит 100,000$!!!!')
time.sleep(6)
print('Также сегодня я хочу порекомендовать свою шоколадку ФИСТБЛСТ!!!')
time.sleep(2)
print('кароч викторина поехали')
pygame.mixer.Channel(0).play(pygame.mixer.Sound('intrques.mp3'))
time.sleep(3)
print('сколько будет 9+10?')
time.sleep(1.5)
print('ответ а-19')
time.sleep(1)
print('ответ b-21')
time.sleep(3)
pygame.mixer.Channel(0).play(pygame.mixer.Sound('ques.mp3'))
time.sleep(1)
print('на ответ дается 30 секунд') #'You got 30 seconds to answer'
#Тут нужен Таймер/I need timer here
a=int(input())
if a<=19:
pygame.mixer.Channel(0).play(pygame.mixer.Sound('lost.mp3'))
time.sleep(2)
print('неправильно, ты проиграл, нужно было взять ответ того ребенка из того самого мема')
time.sleep(2)
exit() #wrong answer
elif a>=21:
print('Проверка верного ответа') #correct answer
#доделай/ill make other part in future
我向您展示了两种可以根据时间控制输入的方法。
threading
库该库提供了一种创建和管理线程的方法,允许在单个进程中并发执行多个任务。
Timer
(这是一个线程子类),它将在完成时运行sys.exit()
。 lambda 关键字定义了一个 lambda 函数,以防止程序在到达我们定义子进程的行时终止timer
。
在
timer
定义之后,是我们想要按时间限制的 input()
。在继续其余代码之前,我们使用 is_alive()
函数检查计时器线程是否仍在运行。如果它仍在运行,则意味着用户在时限内输入了数据,因此我们停止timer
进程,因为时间尚未到期。否则,我们会因为时间已过而退出程序。
import threading, sys
countdown_seconds = 30.0
timer = threading.Timer(countdown_seconds, lambda: sys.exit())
user_input = input("Please provide your answer: ")
if timer.is_alive():
timer.cancel()
else:
sys.exit("Time expired :(")
print("You entered:", user_input)
请注意,在没有警告的情况下关闭程序可能会导致用户困惑,应尽可能避免。如果您想继续这种行为,您应该知道使用
exit()
内置库的
sys
函数。 这篇文章讨论了exit()
、quit()
、sys.quit()
和os._exit()
之间的区别。
pytimedinput
正如 user19077881 建议您可以简单地使用
pytimedinput
库。来自图书馆本身:
from pytimedinput import timedInput
userText, timedOut = timedInput("Please, do enter something: ")
if(timedOut):
print("Timed out when waiting for input.")
print(f"User-input so far: '{userText}'")
else:
print(f"User-input: '{userText}'")