티스토리 뷰
개발사항
- 사용자에게 입력받은 값의 평균을 구한다.
- done 이라는 문자열이 입력되기 전까지 숫자를 계속 입력받는다.
- done 이 입력되면 총합계 및 평균을 출력하고 프로그램을 종료한다.
END
티스토리 뷰
사용자에게
강아지의 이름을 입력 받아
리스트에 저장하였다가
출력하는 프로그램이다.
1 2 3 4 5 6 7 8 9 10 11 12 | names = [] while True: name = input("강아지의 이름을 입력하시오 (종료는 엔터키) : ") if name == '': break names.append(name) print("강아지들의 이름 : ") for i in range(len(names)): print(names[i], end=", ") | cs |
- 설명
강아지의 이름을 입력받아
name 변수에 담은 뒤,
names 리스트에 추가한다.
line 5를 통해
엔터키만 입력받을 시
while문을 빠져나간다.
while문이 종료되면
강아지들의 이름이
리스트를 순회하며 출력된다.
end=", "를 쓰면
다음 라인으로 가지 않고
a, b, c처럼 출력된다.
- 결과
- 추가
for i in names: print(i, end=", ") |
위와 같이 리스트의
item 자체를 반복해도
결과는 동일하다.
직렬 데이터를 읽고 while 루프를 사용하여 csv 파일에 쓰고 있습니다. 사용자가 충분한 데이터를 수집했다고 느끼면 while 루프를 종료 할 수 있기를 바랍니다. 나는 opencv를 사용하여 이와 같은 일을했지만이 응용 프로그램에서 작동하지 않는 것 같습니다 (그리고 어쨌든이 기능을 위해 opencv를 가져오고 싶지 않습니다) … 그래서. 사용자가 루프를 벗어나게하려면 어떻게해야합니까? 또한 while 루프가 종료 된 후에도 스크립트가 계속 실행되어야하므로 키보드 인터럽트를
사용하고 싶지 않습니다. 가장 쉬운 방법은 일반적인 Ctrl-C(SIGINT)로 중단하는 것입니다 . 이후 Ctrl-C원인이 KeyboardInterrupt제기 될 단지 루프 밖에서 그것을 잡을 그것을 무시한다. 비표준 모듈이 필요하지 않고 100 % 운송 가능한 솔루션이 있습니다.답변
답변
답변
다음 코드가 나를 위해 작동합니다. openCV (cv2 가져 오기)가 필요합니다.
코드는 누른 키를 지속적으로 찾는 무한 루프로 구성됩니다. 이 경우 ‘q’키를 누르면 프로그램이 종료됩니다. 다른 키 (이 예에서는 ‘b’또는 ‘k’)를 눌러 변수 값 변경 또는 기능 실행과 같은 다른 작업을 수행 할 수 있습니다.
import cv2 while True: k = cv2.waitKey(1) & 0xFF # press 'q' to exit if k == ord('q'): break elif k == ord('b'): # change a variable / do something ... elif k == ord('k'): # change a variable / do something ...답변
Python 3.7의 경우 user297171의 멋진 답변을 복사하고 변경하여 테스트 한 Python 3.7의 모든 시나리오에서 작동합니다.
import threading as th keep_going = True def key_capture_thread(): global keep_going input() keep_going = False def do_stuff(): th.Thread(target=key_capture_thread, args=(), name='key_capture_thread', daemon=True).start() while keep_going: print('still going...') do_stuff()답변
답변
항상 sys.exit()있습니다.
Python 핵심 라이브러리의 시스템 라이브러리에는 프로토 타이핑시 매우 편리한 종료 기능이 있습니다. 코드는 다음과 같습니다.
import sys while True: selection = raw_input("U: Create User\nQ: Quit") if selection is "Q" or selection is "q": print("Quitting") sys.exit() if selection is "U" or selection is "u": print("User") #do_something()답변
특정 키 (이 경우 이스케이프 키)로 스크립트를 끝내도록 rayzinnz의 답변을 수정했습니다.
import threading as th import time import keyboard keep_going = True def key_capture_thread(): global keep_going a = keyboard.read_key() if a== "esc": keep_going = False def do_stuff(): th.Thread(target=key_capture_thread, args=(), name='key_capture_thread', daemon=True).start() i=0 while keep_going: print('still going...') time.sleep(1) i=i+1 print (i) print ("Schleife beendet") do_stuff()