파이썬 입력 값이 0 이면 프로그램 종료 - paisseon iblyeog gabs-i 0 imyeon peulogeulaem jonglyo

break문과 continue문

앞서 설명한

for문 : 순회할 객체의 마지막 항목까지 반복

while문 : bool 값을 반환하는 조건식이 False를 반환할 때까지 반복

이외에

break문 : 논리적으로 반복문을 빠져나갈 때 사용. 그 자리에서 바로 반복문이 종료됨

continue문 : 이후 코드는 건너뛰고 반복문을 이어서 계속 실행할 때 사용

break문 예제

사용자의 입력값이 문자열 "q"이면 반복문을 빠져나오는 코드

>>> answer=""
>>> while True:
	answer=input("명령을 입력하세요.\n'q'를 입력하면 프로그램이 종료됩니다.:")
	if answer=="q":
		break
	print("'{0}'를 입력하셨습니다.".format(answer))

>>> print("프로그램을 종료합니다...")

변수 answer는 공백 문자열("")로 초기화

while문에서는 가장먼저 input() 함수를 이용해 사용자가 입력한 문자열을 변수 answer에 저장

이때 저장된 answer의 값이 q이면 break문에 의해 while문에서 벗어남

결과 출력

입력된 값이 q가 아닐경우 블록 내의 print()함수 실행

q입력시 결과

명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다.:q
프로그램을 종료합니다...

a입력시 결과

명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다.:a
'a'를 입력하셨습니다.

str.format()함수의 첫 번째 인자 answer의 값이 {0}에 대입

continue문 예제

1부터 10까지 저장되어 있는 리스트 객체에서 3의 배수를 제외한 합을 구하는 코드

>>> numlist=[1,2,3,4,5,6,7,8,9,10]
>>> total=0
>>> for n in numlist:
	if n%3==0:
		continue
	total+=n

	
>>> print("3의 배수를 제외한 총합: {0}".format(total))
3의 배수를 제외한 총합: 37

numlist : 1부터 10까지 정수를 갖는 리스트

total : 합을 누적해서 저장할 정수형 변수

for문에서 numlist의 항목은 차례대로 변수n에 대입

n의 값이 3의 배수인지를 검사하기 위해 나머지(%)연산자 사용

변수 n의 값이 3의 배수일때 -> 나머지 블록은 건너뛰고 for문으로 제어를 옮김

변수 n의 값이 3의 배수가 아닐때 -> 변수 total에 값 누적

더 이상 접근할 수 없는 항목이 없는 경우 for문을 빠져나와 print()함수 호출

str.format() 함수의 첫 번째 인자 total의 값이 {0}에 대입

for문과 while문을 활용해 값이 반복되는 프로그램 만들기(트리만들기)

파이썬 입력 값이 0 이면 프로그램 종료 - paisseon iblyeog gabs-i 0 imyeon peulogeulaem jonglyo
Step 1 풀기
for i in range(1,5):
    print("*" * i)

for 문에서 range객체를 이용하여 변수 i의 반복 횟수 설정

4번 반복이기 때문에 시작은 1, 종료는 5를 입력 ->반복은 4번 실행됨

print() 문에서는 반복해서 출력해야 하므로 반복 제어변수 i를 사용

*
**
***
****

for루프로 작성했던 코드를 while루프로 변경하기

i = 1
while i <= 4:
    print("*" *i)
    i = i+1

while루프를 빠져나가는 조건 설정 필요 ->변수를 선언해야 함

(위의 코드를 주석 처리 시, 블록 지정 후 ctrl+/ 단축키로 주석처리)

변수 i의 선언

반복이 4번이므로 i를 1로 시작

while 문에서 i를 4와 비교하는 코드 작성 -> 반복적인 수 i에 대한 변이를 반드시 체크해야 함

i = i+1 처럼 i값을 증가시키는 코드가 없으면 무한루프 발생

*
**
***
****

Step 2의 경우, Step 1 의 결과를 두번 반복해서 출력

Step 2 풀기
for i in range(1,3):
    for k in range(1,5):
        print("*" * k)

중첩된 for루프 사용

range 객체를 이용하여 변수 i의 반복 횟수 설정

전체 루프는 두 번 반복되고, 내부 루프는 4번 반복된다

*
**
***
****
*
**
***
****

for루프 대신에 while루프를 사용해서 코드 작성

i, k = 1, 1
while i <= 2:
    while k <= 4:
        print("*" * k)
        k = k + 1
    i = i + 1

바깥 루프를 제어하는 i와 안쪽 루프를 제어하는 k 만들기

실행 결과

*
**
***
****

k를 초기화 해주는 구문이 없기 때문에 틀린값이 나온다

k=1로 초기화 해주는 코드를 추가로 작성

i, k = 1, 1
while i <= 2:
    while k <= 4:
        print("*" * k)
        k = k + 1
    i = i + 1
    k=1
*
**
***
****
*
**
***
****

특정 문자 입력 시 프로그램 종료 방법 문의 드립니다.

너굴너굴너구리

 · 2020.11.12 오후 8:44

import random

import os

import sys

def input_check(msgcasting=int):

while True:

try:

user_input = int(input("몇 일까요?(1 ~ 99 사이의 정수만 입력하세요) : "))

if user_input == "n":

sys.exit()

return user_input

except:

continue

chance = 10

os.system("cls")

print("1부터 99까지의 숫자를 10번의 시도 안에 맞춰보는 게임입니다")

def game():

global count

count = 0

number = random.randint(199)

while count < chance:

count += 1

user_input = input_check("몇 일까요?(1 ~ 99 사이의 정수만 입력하세요) : ")

if user_input == number: 

print("성공! {}이(가) 맞습니다.".format(number))

print("{}번만에 성공하셨습니다.".format(count))

break

elif count == chance:

print("실패, 정답은 {}입니다.".format(number))

break

elif user_input < number:

print("{}보다 큽니다.".format(user_input))

elif user_input > number:

print("{}보다 작습니다.".format(user_input))        

game()

while True:

print("게임을 계속 하시겠습니까?(Y/N) : "end='')

answer = input()

if answer == "y" or answer == "Y":

game()

elif answer == "n" or answer == "N":

print("게임을 종료합니다.")

break

위 코드는 제가 일부 기능을 추가 한 상태입니다.

그런데 숫자를 입력 받을 때 사용자가 n을 입력하면 게임이 종료되게끔

이런 저런 시도를 해봤는데 안되더라고요 그래서 

user_input = input("몇 일까요?(1 ~ 99 사이의 정수만 입력하세요) : ")

if user_input == "n":

sys.exit()

마지막으로 input_check 안에 이런식으로 해봤는데도 의도대로 안되더라고요.

무엇이 문제인지 잘 모르겠습니다.

어떻게 하면 n을 입력받았을 때 프로그램이 종료될까요?

아주 단순한 문제인거 같은데 답을 모르겠습니다.