Hướng dẫn break while loop python keyboard - ngắt vòng lặp trong khi bàn phím python

Tôi hiện có mã về cơ bản chạy vô hạn trong khi vòng lặp để thu thập dữ liệu từ người dùng. Liên tục cập nhật từ điển/danh sách dựa trên nội dung của tệp văn bản. Để tham khảo:

while (True):
    IDs2=UpdatePoints(value,IDs2)
    time.sleep(10)

Về cơ bản, vấn đề của tôi là tôi không biết khi nào tôi muốn điều này kết thúc, nhưng sau đó trong khi Loop chạy, tôi muốn sử dụng thông tin được thu thập, không mất nó bằng cách làm hỏng chương trình của tôi. Có một cách đơn giản, thanh lịch để đơn giản thoát ra khỏi vòng lặp trong khi tôi muốn? Một cái gì đó giống như nhấn một phím nhất định trên bàn phím của tôi sẽ rất tuyệt vời.

Hỏi ngày 25 tháng 9 năm 2013 lúc 1:51Sep 25, 2013 at 1:51

Hướng dẫn break while loop python keyboard - ngắt vòng lặp trong khi bàn phím python

Bạn có thể thử gói mã đó trong một thử/ngoại trừ khối, vì các gián đoạn bàn phím chỉ là ngoại lệ:

try:
    while True:
        IDs2=UpdatePoints(value,IDs2)
        time.sleep(10)
except KeyboardInterrupt:
    print('interrupted!')

Sau đó, bạn có thể thoát khỏi vòng lặp với Ctrl-C.

Melebius

5.9104 Huy hiệu vàng35 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges35 silver badges50 bronze badges

Đã trả lời ngày 25 tháng 9 năm 2013 lúc 1:54Sep 25, 2013 at 1:54

Hướng dẫn break while loop python keyboard - ngắt vòng lặp trong khi bàn phím python

Steve Howardsteve HowardSteve Howard

6.5191 Huy hiệu vàng26 Huy hiệu bạc37 Huy hiệu đồng1 gold badge26 silver badges37 bronze badges

4

Bạn có thể sử dụng các ngoại lệ. Nhưng bạn chỉ nên sử dụng các ngoại lệ cho những thứ không được cho là sẽ xảy ra. Vì vậy, không cho điều này.

Đó là lý do tại sao tôi giới thiệu và tín hiệu:

import sys, signal
def signal_handler(signal, frame):
    print("\nprogram exiting gracefully")
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)

Bạn nên đặt cái này vào đầu chương trình của bạn và khi bạn nhấn Ctrl+C bất cứ nơi nào trong chương trình của bạn, nó sẽ tắt một cách duyên dáng

Giải thích mã:

Bạn nhập syssignals. Sau đó, bạn thực hiện một chức năng thực thi khi thoát. sys.exit(0) dừng lập trình với mã thoát 0 (mã nói rằng, mọi thứ đều diễn ra tốt đẹp).

Khi chương trình nhận được sigint bằng Ctrl-C hoặc bằng lệnh giết trong chương trình thiết bị đầu cuối bạn sẽ tắt một cách duyên dáng.

Đã trả lời ngày 29 tháng 7 năm 2016 lúc 18:54Jul 29, 2016 at 18:54

TristantristanTristan

1.90119 huy hiệu bạc32 huy hiệu đồng19 silver badges32 bronze badges

2

Tôi nghĩ rằng giải pháp dễ nhất là bắt gặp bàn phím khi nhấn phím ngắt và sử dụng nó để xác định khi nào nên dừng vòng lặp.

except KeyboardInterrupt:
    break

Nhược điểm của việc tìm kiếm ngoại lệ này là nó có thể ngăn người dùng chấm dứt chương trình trong khi vòng lặp vẫn đang chạy.

Đã trả lời ngày 25 tháng 9 năm 2013 lúc 1:54Sep 25, 2013 at 1:54

Hướng dẫn break while loop python keyboard - ngắt vòng lặp trong khi bàn phím python

Steve Howardsteve Howardeandersson

6.5191 Huy hiệu vàng26 Huy hiệu bạc37 Huy hiệu đồng8 gold badges88 silver badges108 bronze badges

1

Bạn có thể sử dụng các ngoại lệ. Nhưng bạn chỉ nên sử dụng các ngoại lệ cho những thứ không được cho là sẽ xảy ra. Vì vậy, không cho điều này.

Đó là lý do tại sao tôi giới thiệu và tín hiệu:

trigger = True
while trigger == True:
 try:
  (tracking program and purchasing program conditions here)
 except:
  trigger = False

print('shutdown initialized')
df = pd.DataFrame...
save all the datas
print('shutdown complete')

etc.

Bạn nên đặt cái này vào đầu chương trình của bạn và khi bạn nhấn Ctrl+C bất cứ nơi nào trong chương trình của bạn, nó sẽ tắt một cách duyên dáng

Giải thích mã:

Bạn nhập syssignals. Sau đó, bạn thực hiện một chức năng thực thi khi thoát. sys.exit(0) dừng lập trình với mã thoát 0 (mã nói rằng, mọi thứ đều diễn ra tốt đẹp).

Hướng dẫn break while loop python keyboard - ngắt vòng lặp trong khi bàn phím python

Khi chương trình nhận được sigint bằng Ctrl-C hoặc bằng lệnh giết trong chương trình thiết bị đầu cuối bạn sẽ tắt một cách duyên dáng.Feb 11, 2019 at 22:14

Hướng dẫn break while loop python keyboard - ngắt vòng lặp trong khi bàn phím python

Đã trả lời ngày 29 tháng 7 năm 2016 lúc 18:54

while True:
    try:
       IDs2=UpdatePoints(value,IDs2)
       time.sleep(10)
    except KeyboardInterrupt:
       break
    except:
       continue

Tristantristan

1.90119 huy hiệu bạc32 huy hiệu đồngJun 24, 2020 at 12:03

Làm thế nào để bạn phá vỡ một vòng lặp trong thời gian với một máy ép phím?

Cách dễ nhất là chỉ làm gián đoạn nó với CTRL-C (SIGINT) thông thường.Vì CTRL-C làm cho bàn phím được tăng lên, chỉ cần bắt nó ra ngoài vòng lặp và bỏ qua nó.interrupt it with the usual Ctrl-C (SIGINT). Since Ctrl-C causes KeyboardInterrupt to be raised, just catch it outside the loop and ignore it.

Làm thế nào để bạn phá vỡ và vòng lặp trong Python?

Trong Python, tuyên bố Break cung cấp cho bạn cơ hội thoát ra khỏi vòng lặp khi một điều kiện bên ngoài được kích hoạt.Bạn sẽ đặt câu lệnh Break trong khối mã trong câu lệnh LOOP của bạn, thường là sau một câu lệnh IF có điều kiện.You'll put the break statement within the block of code under your loop statement, usually after a conditional if statement.

Làm thế nào để bạn thoát ra khỏi vòng lặp thời gian?

Để thoát ra khỏi vòng lặp thời gian, bạn có thể sử dụng endloop, tiếp tục, tiếp tục hoặc câu lệnh trả lại.end trong khi đó;Nếu tên trống, các câu lệnh khác không được thực thi trong đó đi qua vòng lặp và toàn bộ vòng lặp được đóng.use the endloop, continue, resume, or return statement. endwhile; If the name is empty, the other statements are not executed in that pass through the loop, and the entire loop is closed.

Tôi có thể phá vỡ một vòng python không?

Bạn có thể sử dụng Break in Python trong tất cả các vòng lặp: trong khi, cho và lồng nhau.Nếu bạn đang sử dụng nó trong các vòng lặp lồng nhau, nó sẽ chấm dứt vòng lặp trong cùng bạn đã sử dụng nó và việc kiểm soát chương trình sẽ chảy đến vòng lặp bên ngoài.. If you are using it in nested loops, it will terminate the innermost loop where you have used it, and the control of the program will flow to the outer loop.