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
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
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 sys
và signals
. 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
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 sys
và signals
. 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.Feb 11, 2019 at 22:14
Đã 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