Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Melaksanakan Input Papan Kekunci Pengguna Terbatas Masa dalam Python Tanpa Ralat?

Bagaimanakah Saya Boleh Melaksanakan Input Papan Kekunci Pengguna Terbatas Masa dalam Python Tanpa Ralat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 07:14:08465semak imbas

How Can I Implement Time-Constrained User Keyboard Input in Python Without Errors?

Input Papan Kekunci Pengguna dengan Respons Kekangan Masa

Apabila menggesa pengguna untuk input, selalunya berguna untuk menetapkan tamat masa untuk menghalang program dari tak tentu hala menunggu jawapan. Walau bagaimanapun, percubaan untuk melaksanakan ciri ini menggunakan pendekatan yang dicadangkan dalam forum dalam talian, seperti yang dirujuk (http://mail.python.org/pipermail/python-list/2006-January/533215.html), mungkin menghadapi masalah.

Secara khusus, percubaan untuk melaksanakan tamat masa menggunakan sama ada sys.input.readline atau timer.sleep selalunya mengakibatkan perkara berikut ralat:

<type 'exceptions.TypeError'>: [raw_]input expected at most 1 arguments, got 2

Ralat ini menunjukkan bahawa fungsi input menjangkakan paling banyak satu argumen, tetapi dua argumen sedang dihantar kepadanya.

Penyelesaian Dipertingkat

Untuk menangani isu ini, pendekatan yang lebih mantap melibatkan penggunaan modul terpilih, yang menyediakan cara yang lebih mudah alih dan cekap untuk mengendalikan input dengan tamat masa. Kod berikut menunjukkan pendekatan ini:

import sys, select

print("You have 10 seconds to respond!")

# Set a timeout of 10 seconds
timeout = 10

# Create a list of input sources to monitor (in this case, only standard input)
inputs = [sys.stdin]

# Use select.select to monitor for input within the specified timeout
readable, _, _ = select.select(inputs, [], [], timeout)

# Check if any input was received within the timeout
if readable:
    # Read and process the input
    input_str = sys.stdin.readline().strip()
    print("You said:", input_str)
else:
    # No input was received within the timeout
    print("You said nothing!")

Penyelesaian ini menggunakan fungsi select.select untuk memantau input daripada input standard dengan tamat masa yang ditentukan. Jika input diterima dalam masa tamat, ia diproses. Jika tidak, atur cara mencetak mesej yang menunjukkan bahawa tiada input diterima.

Dengan menggunakan modul pilih, pendekatan ini mengelakkan TypeError yang ditemui dalam percubaan sebelumnya dan menyediakan cara yang lebih dipercayai untuk melaksanakan input pengguna terhad masa dalam Python .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Input Papan Kekunci Pengguna Terbatas Masa dalam Python Tanpa Ralat?. 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