Membaca Aksara Tunggal daripada Input Pengguna Cross-Platform
Dalam pelbagai senario pengaturcaraan, adalah perlu untuk membaca satu aksara daripada input pengguna tanpa penimbal atau bergema. Fungsi ini serupa dengan fungsi getch() terkenal yang tersedia dalam Windows, tetapi pendekatan universal yang berfungsi merentasi berbilang platform adalah dikehendaki.
Penyelesaian:
Untuk mencapai matlamat ini pembacaan aksara merentas platform, anda boleh menggunakan resipi Python dipacu komuniti dari tapak ActiveState Recipes: "getch()-seperti bacaan aksara tidak buffer dari stdin pada kedua-dua Windows dan Unix." Resipi ini menyediakan pelaksanaan berasaskan kelas, memenuhi keperluan sistem berasaskan Windows dan Unix.
Pelaksanaan:
Coretan kod berikut menunjukkan pelaksanaan rentas- kelas membaca aksara platform:
class _Getch: """Gets a single character from standard input. Does not echo to the screen.""" def __init__(self): try: self.impl = _GetchWindows() except ImportError: self.impl = _GetchUnix() def __call__(self): return self.impl() class _GetchUnix: def __init__(self): import tty, sys def __call__(self): import sys, tty, termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch class _GetchWindows: def __init__(self): import msvcrt def __call__(self): import msvcrt return msvcrt.getch() getch = _Getch()
Untuk menggunakan kelas ini, hanya buat seketika kelas _Getch dan panggilnya. Hasilnya ialah aksara tunggal yang ditaip oleh pengguna, tanpa sebarang penimbalan atau bergema. Contohnya:
result = getch()
Kesimpulan:
Pendekatan membaca aksara merentas platform ini boleh digunakan secara meluas dalam situasi di mana input pengguna segera diperlukan, seperti menangkap ketukan kekunci dalam aplikasi terminal atau melaksanakan antara muka pengguna interaktif.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Watak Tunggal daripada Input Pengguna Merentasi Platform Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!