본문 바로가기
국비 교육/파이썬

[파이썬] 제어문, 반복문

by 육츠 2023. 11. 4.
Contents 접기

제어문 : if

수행할 문장은 반드시 들여쓰기 # ** (들여쓰기는 언제나 같은 깊이로 해야한다.(같이 실행 될거면))
조건문 반복문 끝에는 ' : ' 사용

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

 

if문의 형식

if 조건문 1 :
    수행할 문장
elif 조건문 2:
    수행할 문장
else:
    수행할 문장

score = float(input("직접입력: "))

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

 

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

i = int(input("입력: "))

if i % 5 == 0:
    print("5의 배수입니다")
else:
    print("5 의 배수가 아닙니다")

 

[문제] 화폐 단위 계산

형식 유지 태그
사용자로부터 금액을 입력받아 화폐의 개수를 출력하는 프로그램을 출력하세요.
조건) 화폐의 종류(단위): 만원, 천원, 백원, 십원 (일원 단위는 절사)

<실행 예>
금액을 입력하세요: 46530
만원: 4개
천원: 5개
백원: 6개
십원: 3개

won = int(input("금액을 입력하세요: "))

만원 = won //10000
천원 = (won % 10000) // 1000
백원 = (won % 1000) // 100
십원 = (won % 100) // 10
print(f"만원: {만원}개")
print(f"천원: {천원}개")
print(f"백원: {백원}개")
print(f"십원: {십원}개")

%를 사용하여 나머지를 사용하였다. 화폐 단위로는 몫만을 가져오는 // 를 사용.

 

반복문: while

조건이 만족하는 동안 명령문을 반복적으로 실행한다. (조건이 참 일때까지 진행, 반복의 횟수를 지정하지 않음)

while 조건:
     명령

while ~ else 문: 조건을 만족하지 않아 while 문을 빠져나오게 되면 else 문이 실행된다.
while 문 안에 break를 넣게 되면 강제종료되어, else 문장은 나오지 않는다.

 

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

sum = 0
for i in range(1,101) :
    if i%2 :  # if i % 2 == 0: # if not i%2:4
      continue
    sum += i
print(sum)

 

반복문 : for

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

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

# [3, 6, 9, 12]
#  result = [] list 의 빈 방을 만들어 주는 것
# 출력문에 [ ] 같이 나오는 것 = 리스트라는 변수 타입을 알려주는 것이다

 

range(start, end, step)

start, end는 생략 가능하며 start를 생략하면 step은 1씩 증가하게 된다.

for 와 list를 사용할때에는 아래 코드처럼 List Comprehension을 사용하는 것이 파이썬스러운 코드에 적합하다.

# list comprehension
a = [1,2,3,4]
result = [ i*3 for i in a ]
print(result)

a에서 원소를 하나씩 빼온다. -> 만약 i가 2의 배수이면 3을 곱하고 아니면 원래 원소를 저장한다.

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

# 순서도
# if i%2 == 0 else i 
# for i in a
# i*3

 

for ~ else 문

for ~ else : 반복문이 break 등으로 중간에 빠져나오지 않고 끝까지 실행됐을 경우 else 문이 실행

if not find : print("검색결과가 없습니다")
>> find = False 로 설정하여 for 문 안에서 find에 대한 조건문을 만들어 놓는다. (검색단어를 발견한 경우)
find = true 가 되어  검색단어를 찾으면 break  만약 단어를 다 찾았는데도  find가 false라면 검색결과가 없다고 출력하라고 한다.

 

break

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

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("검색결과가 없습니다")
  
#else:
        #  print("검색결과가 없습니다") 오류적 err

 

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

a ="-"
for i in range(5):
  print (a*5,end='')
  print("+",end='')

print('\n')

# 틀린 답
for i in range(5):
  print(a*5 ,sep='+',end='')
 # sep 는 값이 두 개일 때 구분하는 용 이기 때문에 
#하나만 출력하는 상황에서는 쓰이지 않음

 

continue

현재 반복문 실행을 중지하고 다음 반복을 수행한다.
조건문과 함께 현재 반복을 끝낼 조건을 검사한 후 실행한다.

 

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

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

내가 만든 코드는 2중  for문을 사용하여 만들었다.

num = int(input("단을 입력하세요: "))
if num >9 or num < 2:
    print("잘 못 입력 하셨습니다.")  
else:
    for i in range(2,10):
     for j in range(1,10):
        print(num,"*",j ,"=",num*j)
     if j==9 : break

 

[문제] 정수 하나를 입력 받아 1부터 입력받은 정수까지의 합을 구하여 출력하세요 단, 반복문은 while 을 이용할 것

n = int(input("정수 입력: "))
s = 0 # 반복 횟수 지정
k = 0
sum = 0 
mum = 0

# 내가 적은 코드
while s <= n:
    sum += s
    s += 1
print (sum)

# 교수님 코드
# = 을 적으면 다음 s 까지 합해지기 때문에 안됨
while k < n:
    k += 1
    mum += k
print (mum)

 

[문제] 연도를 입력받아 윤년인지 평년인지 판단하는 프로그램을 작성하세요.

- 프로그램은 반복적으로 수행되며 0을 입력받으면 종료 한다
- 윤년조건 : 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않는 해 또는 400으로 나누어 떨어지는 해는 윤년이다.

[실행 예]
연도를 입력하세요(종료 0): 2020
2020년은 윤년입니다~!
연도를 입력하세요(종료 0): 2021
2021년은 평년입니다..
연도를 입력하세요(종료 0): 0

# 내가 적은 코드
while True :
    year = int(input("연도를 입력하세요(종료: 0): "))
    if year == 0: break
    elif (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print(f"{year}년은 윤년입니다")
        continue
    else :
        print(f"{year}년은 평년입니다")
        continue

# 교수님 코드
# 삼항 연산자 
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 = float(input("키를 입력하세요(cm): "))
weight = float(input("몸무게를 입력하세요(kg): "))
result = weight / ((height/100)**2)
# re = '' # null string 으로 생성

if result < 18.5:
    print("당신의 BMI 는  저체중입니다")
    # re = '저체중'
elif 18.5 <= result <= 22.9:
    print("당신의 BMI 는 표준체중입니다")
    # re = '정상체중'
elif 23 <= result <= 29.9:
    print("당신의 BMI 는 비만 1단계입니다")
    # re = '비만 1 단계'
elif result > 29.9:
    print("당신의 BMI 는 비만 2단계입니다")
    # re = '비만 2 단계'

# print(f"당신의 BMI {re} 입니다")


'국비 교육 > 파이썬' 카테고리의 다른 글

[파이썬] List  (0) 2023.11.04
[파이썬] 문자열 다루기  (0) 2023.11.04
[파이썬] 주석, 연산자, 표준 입출력  (0) 2023.11.04
[파이썬] 아나콘다 설치하기  (0) 2023.11.04