Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Had Masa untuk Input Pengguna dalam Python?

Bagaimana untuk Melaksanakan Had Masa untuk Input Pengguna dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-11-16 17:42:03873semak imbas

How to Implement a Time Limit for User Input in Python?

Cara Melaksanakan Had Masa untuk Input Pengguna dalam Python

Semasa menggunakan fungsi raw_input(), anda mungkin menghadapi situasi yang anda inginkan untuk menamatkan input selepas tempoh yang telah ditetapkan. Nasib baik, Python menyediakan beberapa penyelesaian untuk menangani keperluan ini.

Kaedah Unix Sahaja:

Cadangan @jer menggunakan fungsi signal.alarm, yang hanya tersedia pada Unix sistem. Fungsi ini menimbulkan pengecualian KeyboardInterrupt apabila tamat masa yang ditentukan dicapai. Kod berikut menunjukkan pendekatan ini:

import signal

def raw_input_with_timeout(prompt, timeout):
    signal.alarm(timeout)
    try:
        return input(prompt)
    except KeyboardInterrupt:
        return None
    finally:
        signal.alarm(0)  # Reset alarm to avoid interference

Kaedah Merentas Platform dan Khusus Windows:

Untuk penyelesaian merentas platform atau khusus Windows, pertimbangkan untuk menggunakan threading.Kelas pemasa bersama-sama dengan thread.interrupt_main. Pendekatan ini menghantar KeyboardInterrupt ke utas utama daripada benang pemasa. Kod di bawah menggambarkan kaedah ini:

import threading

def raw_input_with_timeout(prompt, timeout):
    print(prompt, end=' ')
    timer = threading.Timer(timeout, thread.interrupt_main)
    result = None
    try:
        timer.start()
        result = input(prompt)
    except KeyboardInterrupt:
        pass
    timer.cancel()
    return result

Kaedah Khusus Windows (Belum Diuji):

Dalam persekitaran Windows, msvcrt boleh digunakan untuk mencapai tamat masa. Pendekatan ini melibatkan tinjauan pendapat untuk menekan kekunci dalam gelung ketat dan mengumpul input sehingga masa maksimum dicapai atau aksara baris baharu dikesan.

import msvcrt
import time

def raw_input_with_timeout(prompt, timeout):
    print(prompt, end=' ')
    finishat = time.time() + timeout
    result = []
    while True:
        if msvcrt.kbhit():
            result.append(msvcrt.getche())
            if result[-1] == '\r':
                return ''.join(result)
            time.sleep(0.1)
        else:
            if time.time() > finishat:
                return None

Gelagat Boleh Disesuaikan:

Sekiranya nilai pulangan tamat masa selain daripada Tiada dikehendaki, cuma gantikan penyataan Tiada pulangan dalam coretan kod di atas. Selain itu, melaraskan penamat selepas setiap ketukan kekunci boleh melaraskan tamat masa berdasarkan rentak input.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Had Masa untuk Input Pengguna dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn