프로그래밍 언어/Python

[Python] 제어문과 반복문 (if, while, for, break, continue)

eunnys 2023. 10. 29. 19:45

1. 제어문 - if

if 문

  • 조건문, 다른 언어와 유사
  • 수행할 문장은 반드시 들여쓰기
  • 들여쓰기는 언제나 같은 깊이로 해여 한다.
  • 탭, 스페이스 2가지를 혼용해서 쓰면 안된다. 최근에는 공백 4개
  • if 조건문, while, for 문 끝에 콜론(:)을 사용
  • 조건문에 비교 연산식 대신 변수를 바로 쓸 수도 있으며, 변수 자체가 논리식이 되는데 이때 각 변수의 논리값은 다음과 같이 결정된다.

 

타입 거짓
숫자 0이 아닌 숫자 0
문자열 비어있지 않은 상태 " "
리스트, 튜플, 딕셔너리 비어있지 않은 상태 빈 상태

 

 

if 문의 형식

score = float(input('성적입력: '))

if score >= 90:
    print('합격')
elif 70 <= score < 90:
    print('재시험')
else:
    print('탈락')
notEmptyString = 'test'

if notEmptyString:
    print('문자열이 비어있지 않습니다.')
else:
    print('문자열이 비어있습니다.')
I = 10

# if I % 2 == 0:
if not I % 2:  # I % 2의 값이 0 이면 False이기 때문에 not을 붙여서 True로 반전
    print('짝수')
else:
    print('홀수')

 

 

 

[문제] 정수 하나를 입력받아 5의 배수인지 조사하여 그 결과를 출력하세요.

number = int(input('정수 입력: '))
if S % 5 == 0:
    print('5의 배수입니다.')
else:
    print('5의 배수가 아닙니다.')

 

 

 

[문제] 화폐단위 계산
- 사용자로부터 금액을 입력 받아 화폐의 개수를 출력하는 프로그램을 작성하세요.
- (조건) 화폐의 종류(단위): 만원, 천원, 백원, 십원 (일원 단위는 절사)

    [예시]
    금액을 입력하세요: 45630
    만원: 4개
    천원: 5개
    백원: 6개
    십원: 3개

money = int(input('금액을 입력하세요: '))
만원 =  money // 10000
천원 = (money - 만원*10000) // 1000
백원 = (money - 만원*10000 - 천원*1000) // 100
십원 = (money - 만원*10000 - 천원*1000 - 백원*100) // 10

print(f'만원: {만원}개')
print(f'천원: {천원}개')
print(f'천원: {백원}개') 
print(f'천원: {십원}개')
money = int(input('금액을 입력하세요: '))
만원 =  money // 10000
천원 = (money % 10000) // 1000
백원 = (money % 1000) // 100
십원 = (money % 100) // 10

print(f'만원: {만원}개')
print(f'천원: {천원}개')
print(f'천원: {백원}개') 
print(f'천원: {십원}개')

 

 

삼항 연산자

- True일 때 실행될 문장 if 조건문 else False일 때 실행될 문장

 

a = 10
b = 20
result = 'a와 b는 같지 않다' if a != b else 'a와 b는 같다'
print(result)

 

 

 

[문제] 대도시 여부 판단

 

[판단 조건]
수도이면서 인구가 100만 이상인 도시
또는, 부자가 20만 이산인 도시

[예시]
수도입니까? (수도: 1, 수도아님: 0) 1
인구 (단위: 만) 150
부자의 수 (단위: 만) 10
대도시 여부: True

수도입니까? (수도: 1, 수도아님: 0) 0
인구 (단위: 만) 90
부자의 수 (단위:만) 30
대도시 여부: True

처리조건: 삼항 연산자 이용

수도 = int(input('수도입니까? '))
인구 = int(input('인구: '))
부자 = int(input('부자의 수: '))

result = '대도시 여부: True' if 수도 == 1 and 인구 >= 100 or 부자 >= 20 else '대도시 여부: False'
print(result)
isCapital = input('수도입니까? (수도: 1, 수도아님: 0) ')
citizens = int(input('인구 (단위: 만) '))
riches = int(input('부자의 수 (단위:만) '))

metropolis = True if (isCapital == '1' and citizens >= 100) or riches >= 20 else False
print('대도시 여부:', metropolis)

 

 

2. 반복문 - while

while 문 형식

- 조건이 만족하는 동안 명령문을 반복적으로 실행한다.

 

 

while  else 문 형식

- 조건을 만족하지 않아 while 문을 빠져나오게 되면 else 문이 실행된다.

 

c = 1
while c <= 5:
    print(c, end=' ')  # end 공백 -> 개행하지 않음
    c += 1
print('End')
sum = 0
for i in range(1, 11):
    sum += i
print(sum)

 

 

[문제] 1~100 사이 값 중 짝수의 합을 구하는 코드를 작성하세요.

sum = 0
for i in range(1, 101):
    # if not i % 2:   # 짝수면
    if i % 2: 
        continue     # 홀수면 continue -> sum하는 걸 skip
    sum += i
print(sum)
while True: 
    s = input('영어단어를 입력하세요(종료:q): ')
    if s == 'q': break
    print(s)
print('End')
for s in 'abcdef': 
    print(s, end=',') 
    print(s, sep=',') 
    # 프린트 함수안의 여러개 값을 출력할때 구분하고자 할때 sep로 구분해줌 여기서 의미 없음
print('\b')
for s in 'abcdef': 
    print(s, end=',') 
    # 프린트 함수안의 여러개 값을 출력할때 구분하고자 할때 sep로 구분해줌 여기서 의미 없음
print('\b')

 

 

3. 반복문 - for

for 문 형식

 

- range() 함수와 함께 사용하여 지정된 횟수 만큼 반복하거나 문자열이나 리스트와 같은 자료형을 순회할 때 사용

 

 

for 문과 range() 함수의 사용

  • range는 지정한 start, end 사이의 숫자를 step의 간격으로 발생시킨다.
  • range의 결과는 start부터 end 바로 앞 숫자까지 컬렉션을 만든다.
  • start와 step은 생략 가능하며, start를 생략하면 0부터, step을 생략하면 1씩 증가한다.

 

 

for와 list (파이썬스럽지 못한 코드)

a = [1,2,3,4] # a는 list 객체 (list: 동일한 데이터 타입의 집합)
result = []
for i in a:
    result.append(i*3) #append()는 리스트 객체에 요소 값을 추가 하는 함수
print(result)

 

 

for와 list (파이썬다운 코드) - LIst Comprehension

a = [1,2,3,4]
result = [i*3 for i in a]
print(result)
a = [1,2,3,4]
result = [i*3 for i in a if i%2 == 0]
print(result)
a = [1,2,3,4]
result = [i*3 if i%2 == 0 else i for i in a]
print(result)

 

 

3. break, continue

break

- break 명령은 반복문을 끝낸다.

- 조건문과 함께 반복을 끝낼 조건을 검사한 후 실행한다.

 

 

continue

- 현재 반복 실행을 중지하고 그 다음 반복을 수행한다.

- 조건문과 함께 현재 반복을 끝낼 조건을 검사한 후 실행한다.

 

key_word = input('검색 단어를 입력하세요: ')
word_list = ['java', 'python', 'c++', 'pascal']
find = False
for w in word_list:
    if key_word == w:
        print('검색 결과:', w)
        find = True
        break
if not find: 
    print('검색 결과가 없습니다.')
key_word = input('검색 단어를 입력하세요: ')
word_list = ['java', 'python', 'c++', 'pascal']
for w in word_list:
    if key_word == w:
        print('검색 결과:', w)
        break
else: print('검색 결과가 없습니다.')
검색 단어를 입력하세요:  java

검색 결과: java

 

 

 

[문제] for문과 문자열 반복을 이용하여 다음 문자열이 출력되는 프로그램을 작성하세요.

---------+---------+---------+---------+---------+

for k in range(1, 6):
    for i in range(1, 10):
        print('-', end='')
    print('+', end='')
for i in range(5):  # end 값만 넣어주면 반복 횟수
    print('-'*9, end='')
    print('+', end='')

 

 

 

[문제] 입력 받은 단의 구구단을 출력하는 프로그램을 작성하세요.

단 = int(input('단을 입력하세요: '))
for v in range(1, 10):
    print(단, 'x', v, '=', 단*v)
단 = int(input('단을 입력하세요: '))
for v in range(1, 10):
    print(f'{단} x {v} = {단*v}')

 

 

 

[문제] 정수를 입력 받아 1부터 입력받은 정수까지의 합을 구하여 출력하는 프로그램을 작성하세요.
- 단, 반복문은 while문을 이용할 것

a  = int(input('정수를 입력하세요: '))
sum = 0
i = 0
while i < a:
    i += 1
    sum += i
print(sum)
num = int(input('정수 입력: '))
cnt = 0 # 반복 횟수
sum = 0 # 전체 합계를 지정
while cnt < num:
    cnt += 1
    sum += cnt
print(f'1 ~ {num}까지의 합: {sum}')

 

 

 

[문제] 연도를 입력 받아 윤년인지 평년인지 판단하는 프로그램을 작성하세요.
- 프로그램은 반복적으로 수행되며 0을 입력받으면 프로그램을 종료한다.
- 윤년 조건: 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않는 해. 또는, 400으로 나누어 떨어지는 해

 

[예시]
연도를 입력하세요(종료:0): 2020
2020년은 윤년입니다.

연도를 입력하세요(종료:0): 2021
2021년 평년입니다.

while True:
    year = int(input('연도를 입력하세요(종료:0): '))
    if year == 0: break
    result = '윤년' if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 else '평년'
    print(f'{year}은 {result}입니다.')

 

 

 

[문제] BMI 측정 프로그램
- 키와 몸무게를 입력 받아 BMI를 측정하는 프로그램을 작성하세요.

 

[예시]
키를 입력하세요(cm): 170
몸무게를 입력하세요(kg): 85
당신의 BMI는 비만 1단계 입니다.

[BMI 계산식]
BMI = 몸무게(kg) / (키(m)의 제곱)
18.5 미만: 저체중
18.5 ~ 22.9: 정상체중
23 ~ 29.9: 비만 1단계
29.9 초과: 비만 2단계

height = int(input('키를 입력하세요(cm): '))
weight = int(input('몸무게를 입력하세요(kg): '))
BMI = weight / (height/100)**2

if BMI < 18.5:
    print('당신의 BMI는 저체중입니다.')
elif 18.5 <= BMI <= 22.9:
    print('당신의 BMI는 정상체중입니다.')
elif 23 <= BMI <= 29.9:
    print('당신의 BMI는 비만 1단계입니다.')
else:
    print('당신의 BMI는 비만 2단계입니다.')
height = float(input('키를 입력하세요(cm): '))
weight = float(input('몸무게를 입력하세요(kg): '))
BMI = weight / ((height/100)**2)
result = ''
if BMI < 18.5:
    result = '저체중'
elif 18.5 <= BMI <= 22.9:
    result = '정상체중'
elif 22.9 < BMI <= 29.9:
    result = '비만 1단계'
else:
    result = '비만 2단계'
print(f'당신의 BMI는 {result}입니다.')

'프로그래밍 언어 > Python' 카테고리의 다른 글

[Python] 연산자 및 자료형 변환  (0) 2023.10.29
[Python] 표준 입출력  (1) 2023.10.29
[Python] 문자열 다루기  (1) 2023.10.29
[Python] Collection - List  (0) 2023.10.29
[Python] Collection - Dictionary  (1) 2023.10.27