Python tạm dừng khi nhấn phím

Khi bạn chạy tập lệnh Python, bạn có thể thấy rằng nó chạy nhanh và đóng. Điều này có thể là do nó đã hoàn thành thành công hoặc có thể là do nó bị lỗi

Vấn đề là cửa sổ Python đóng quá nhanh để bạn có thể nói. Trong trường hợp như thế này, bạn muốn tập lệnh tạm dừng trước khi thoát. Có một vài cách điều này có thể được thực hiện

Ngủ một lúc

Một tùy chọn rất đơn giản là chỉ cần đợi vài giây rồi tiếp tục

import time

print ('Waiting 5 seconds before continuing')

time.sleep(5)

Đợi phím Enter

Nếu bạn muốn tập lệnh đợi cho đến khi bạn sẵn sàng, bạn có thể yêu cầu người dùng nhập dữ liệu. Tùy chọn đơn giản nhất ở đây là sử dụng đầu vào, lấy các ký tự cho đến khi nhấn phím enter

input("Press enter to continue")

Bấm phím bất kỳ để tiếp tục

Nhấn bất kỳ phím nào khó hơn âm thanh. Điều này không hoạt động trên các nền tảng tốt như bạn nghĩ. Đó là, các giải pháp hoạt động trên Windows không hoạt động trên Linux và ngược lại

Trong bài viết này, chúng ta sẽ thảo luận về cách tạm dừng thực thi mã Python cho đến khi nhấn một phím nhất định. Khái niệm này có thể hữu ích để tạm dừng thực thi Python hoặc áp đặt các điều kiện đối với việc triển khai mã. Có ba cách để làm điều này

  1. Sử dụng gói bàn phím
  2. Sử dụng gói msvcrt/getch
  3. Sử dụng chức năng nhập sẵn có

Trước khi thảo luận về các phương pháp đó, chúng ta hãy thảo luận về một khái niệm mà chúng ta cần hiểu trước

bước tiên quyết

Vì chúng ta sẽ đọc phím được nhấn, điều quan trọng là trình soạn thảo mã hoặc IDE mà chúng ta đang sử dụng để triển khai các khái niệm này phải chấp nhận đầu vào từ người dùng. Do đó, tôi sẽ đề nghị bạn chạy các đoạn mã được hiển thị trong bài viết này bằng Visual Studio Code, PowerShell/ Terminal hoặc JuPyter. Nếu bạn đang chạy trên Sublime Text, hãy cài đặt gói SublimeRepl trên trình chỉnh sửa trước khi chạy mã (xem stackoverflow. com)

Khi bạn chắc chắn rằng Python của bạn có thể nhận đầu vào, bây giờ chúng ta có thể tiến hành thảo luận về ba phương pháp

Phương pháp 1. Sử dụng gói bàn phím

Gói này cho phép chúng tôi đọc phím được nhấn và sau đó áp đặt điều kiện của chúng tôi tại thời điểm đó. Nó không phải là một chức năng sẵn có trong Python nhưng có thể được cài đặt bằng cách sử dụng pip, nghĩa là chạy bàn phím cài đặt pip trên Windows PowerShell. Sau khi cài đặt, chúng ta có thể thực thi đoạn mã sau để tìm hiểu cách thức hoạt động của phương thức này

1

2

3

4

5

6

nhập bàn phím #load gói bàn phím

 

trong khi Đúng.

    nếu bàn phím. bị_ép("q"): #returns True nếu nhấn "q"

        print("Bạn đã nhấn")<

        break #break vòng lặp while nhấn "q"

Đoạn mã trên sẽ tiếp tục chạy cho đến khi phím “q” được nhấn, đó là khi phím “q” được nhấn Python in ra “Bạn đã nhấn q” và sau đó vòng lặp kết thúc bằng từ khóa “break”

Để thay thế cho phương pháp trên, chúng ta có thể sử dụng dòng mã sau  (Trong trường hợp này, Python đợi cho đến khi phím thoát được nhấn)

1

bàn phím. chờ đã("esc")#wait for escape key to be pressed

Gói này cũng có một hàm gọi là read_key() để đọc phím được nhấn. Bạn có thể đọc thêm những điều thú vị bạn có thể làm với gói bàn phím trong tài liệu của nó

Trong Linux và macOS, bạn cần có đặc quyền SUDO (Super User DO) để sử dụng gói bàn phím để thực thi mã python và cài đặt gói

Phương pháp 2. Sử dụng gói msvcrt/getch

Gói Python sẵn có này cung cấp các chức năng hữu ích trong Thư viện thời gian chạy Microsoft Visual C/C++ (do đó có tên msvcrt). Bài viết này sẽ tận dụng chức năng đọc phím được nhấn để tạm dừng thực thi Python

1

2

3

4

5

6

7

nhập msvcrt

 

trong khi Đúng.

    char = msvcrt. lấy(). giải mã("utf-8")#read pressed key, decode

    in(char)

    if char == chr(27): #char(27) là phím thoát

        nghỉ

Trong đoạn mã trên, msvcrt. getch() tìm nạp mã được nhấn ở định dạng byte và do đó chúng ta cần sử dụng giải mã UTF-8 để lấy mã ở định dạng chuỗi. Ví dụ: b’\x0c’ trở thành ♀, b’\x1b’ trở thành ← (nhân tiện, đây là phím thoát)

Bạn có thể nhập các ký tự không chuẩn khác nhau bằng phím Ctrl và một chữ cái để xem nó hoạt động như thế nào

Hàm mã được giới thiệu trong đoạn mã này là chr(). Nó trả về một ký tự chuỗi từ một số nguyên (số nguyên đại diện cho điểm mã Unicode của ký tự chuỗi). Ký tự 27 trong Unicode là một ký tự thoát và do đó nhấn phím thoát khớp với chr(27) trong mã. Do đó, vòng lặp while chỉ kết thúc khi nhấn phím thoát. Chỉ cần sử dụng hàm chr() khi xử lý các ký tự được giải mã có vấn đề như phím thoát;

Gói msvcrt chỉ khả dụng trên hệ điều hành Windows. Trên Linux và macOS, gói getch có thể được sử dụng để có các chức năng giống như msvcrt. Bạn có thể cần cài đặt gói getch bằng cách chạy pip install getch trên thiết bị đầu cuối. Sau khi cài đặt, bây giờ bạn có thể sử dụng mã bên dưới để thay thế

1

2

3

4

5

6

7

từ lấy nhập lấy

 

trong khi Đúng.

    char = get() #read the pressed key

    in(char)

    if char == chr(27):

        nghỉ

Phương pháp 3. Sử dụng chức năng nhập liệu

Trong Python 3, sử dụng hàm input() sẽ tạm dừng thực thi Python cho đến khi nhấn phím ENTER, ví dụ: