我需要一个计时器,如果 30 秒后没有给出答案,则退出()程序

问题描述 投票:0回答:1

我对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
python timer
1个回答
0
投票

我向您展示了两种可以根据时间控制输入的方法。

1.使用原生
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()
之间的区别。

2.使用
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}'")
© www.soinside.com 2019 - 2024. All rights reserved.