본문 바로가기

Python

7. 제어문 ( if, elif, else)

'''
제어문이란? 명령어의 흐름(순서)를 제어하는 용도로 이용
제어문의 종류
     : 조건문 - if , if~else~ , 다중 조건문 if ~ elif ~ else
     : 반복문 - while 조건식 : while 무한루프 + break  
             - for ~ in range(), for ~ in 문자열|리스트|튜플|딕셔너리
     : 기타명령어 - break, continue, pass 
제어문 : 들여쓰기(4칸, 탭키 1개)를 이용해서 실행 블록을 지정
'''

1. 단순 조건문
'''
조건식을 만족하면 명령문1 ~ 수행


# 실행명령문이 여러개인 경우에는 들여쓰기 이용
if 조건식|변수|값 :
    명령문1
    명령문2
    ...

# 실행명령문이 하나인 경우에는 한줄로 가능
if 조건식|변수|값 : 실행명령문

# True(참)이 되는 값 
# => 0이 아닌 숫자, True, 길이가 0이 아닌 빈 문자열이 아닌 문자열|리스트|튜플|딕셔너리|집합
# False(거짓)이 되는 값
# => 0, False, 길이가 0인 문자열|리스트|튜플|딕셔너리|집합, None
'''

# 양수이거나 0보다 크면 메세지 출력
x = 10
if ( x>=0 ) :
    print(f' {x}은/는 양수이거나 0보다 크다.')
print('if 테스트 종료')    
'''
 10는 양수이거나 0보다 크다.
if 테스트 종료
'''
x = -10
if ( x>=0 ) : 
    print(f' {x}은/는 양수이거나 0보다 크다.')
# 수행 명령어가 한 행인 경우 if 문뒤에 바로 사용 가능
# ex) if ( x>=0 ) : print(f' {x}은/는 양수이거나 0보다 크다.')
print('if 테스트 종료')    #if 테스트 종료

# if 문을 여러번 쓴 경우
# 짝수인지 홀수인지 출력 
# - 숫자 % 2 == 0 => 짝수
# - 숫자 % 2 != 0 => 홀수
x = 10
if x%2 == 0 : print('짝수')
if x%2 != 0 : print('홀수')
print('짝수 홀수 테스트 종료')

# if 문을 여러번 쓴 경우
# 짝수인지 홀수인지 3의 배수인지 10의 배수인지 출력
# - 숫자 % 2 == 0 => 짝수
# - 숫자 % 2 != 0 => 홀수
# - 숫자 % 3 == 0 => 3의배수
# - 숫자 % 10 == 0 => 10의배수

x=12
if x%2 == 0 : print('짝수')
if x%2 != 0 : print('홀수')
if x%3 == 0 : print('3의배수')
if x%10 == 0 : print('10의배수')
print('짝수 홀수 테스트 종료')

2. if~ else 조건문
'''
조건식을 만족하면(if) 명령문1 그렇지 않으면(else) 명령문2 수행


# 실행명령문이 여러개인 경우에는 들여쓰기 이용
if 조건식|변수|값 :
    명령문1-1
    명령문1-2
    ...
    
    
else :
    명령문1-1
    명령문1-2
    ...     

# 실행명령문이 하나인 경우에는 한줄로 가능
if 조건식|변수|값 : 실행명령문1
else : 실행명령문1
...

'''
# 짝수인지 홀수인지 출력
# 단순 if 문 예시
# - 숫자 % 2 == 0 => 짝수
# - 숫자 % 2 != 0 => 홀수

#if~else 구조로 변경
# print('='*20)
# x=10
# if x%2 == 0 :
#     print('짝수')
# else:
#     print('홀수')
# print('if~else 테스트 종료')
#짝수
#if~else 테스트 종료

# 미성년자 여부 판별
# age = int(input('나이를 입력하세요...'))
# if age>=19 :
#     print('성인입니다.')
#     print('투표권이 있습니다.')
# else :
#     print('미성년자 입니다.')
# print('if~ else 테스트 종료2')

3. if~ elif~ else 조건문 (다중 조건식)
'''
조건식1을 만족하면(if) 명령문1 
조건식2(elif)를 만족하면 명령문2
그렇지 않으면(else) 명령문3 수행

# 실행명령문이 여러개인 경우에는 들여쓰기 이용
if 조건식|변수|값 :
    명령문1-1
    명령문1-2
    ...
    
    
elif 조건식|변수|값 :
    명령문2-1
    명령문2-2
    ...     

else :
    명령문 3-1
    명령문 3-2
    ...
  
'''
# x 값에 따라서 양수, 음수, 0 출력하기
x = 0
if x>0 :
    print('양수')
elif x<0 :
    print('음수')
else :
    print('0')
print('if~elif~else 테스트 종료')

# 관계 연산자 : > , < , >= , <= , == , !=
# 논리 연산자 : and(논리곱), or(논리합), not(논리부정)
# 3의 배수이거나 10의 배수이면 성공 그렇지 않다면 실패라는 메세지를 출력한다.

# x = int(input('숫자를 입력하세요...'))
# if (x%3==0) or (x%10==0) :
#     print('성공')
# else :
#     print('실패')    

# 3의 배수이지만 5의 배수가 아니면 성공 그렇지 않다면 실패 출력
# 15의 배수는 실패
x = int(input('숫자를 입력하세요...'))
if (x%3==0) and (x%5!=0) :
    print('성공')
else :
    print('실패')

 

# Quiz1      
# ~7 : 영유아
# 8 ~ 13 : 초등학생
# 14 ~ 16 : 중학생
# 17 ~ 19 : 고등학생
# 20 ~ : 성인
# 당신의 나이를 입력해주세요? ...12
# 초등학생

# 비교연산자 1 : minNumber < 변수 < maxNumber


age = int(input('당신의 나이를 입력해주세요?...'))
if age <= 7 and age>=0 :
    print('영유아')
elif age<= 13 : 
    print ('초등학생')
elif age<=16 :
    print('중학생')       
elif age<=19 :
    print('고등학생')
else :
    print('성인')
            
# 비교연산자 1 : minNumber < 변수 < maxNumber
age = int(input('당신의 나이를 입력해주세요?...'))
if 0<=age<=7 :
    print('영유아')
elif 8<=age<=13 : 
    print ('초등학생')
elif 14<=age<=16 :
    print('중학생')       
elif 17<=age<=19 :
    print('고등학생')
else :
    print('성인')            
            
# 비교연산자 2 : 순서 주의
age = int(input('당신의 나이를 입력해주세요?...'))
if ( age>19) :
    print(f' {age} => 성인')
elif (age>16) :
    print(f' {age} => 고등학생')
elif (age>13) :
    print(f' {age} => 중학생')
elif (age>7) :
    print(f' {age} => 초등학생')
else :
    print(f' {age} => 영유아')
    
    
           
'''
Quiz2
키와 체중을 입력받은 후 bmi 값에 따라 메세지를 출력하여라.
# bmi 공식
k = 키(입력값) 단위 cm
w = 체중(입력값)
bmi = 체중(kg)/키(m)의제곱
키의 단위는 미터(m)
# bmi 값에 따라 출력되는 메세지
고도 비만 : 35 보다 클 경우
중등도 비만 : 30 - 35 미만
경도 비만 : 25 - 30 미만
과체중 : 23 - 25 미만
정상 : 18.5 - 23 미만
저체중 : 18.5 미만
키를 입력해주세요... 단위 cm...175
체중을 입력해주세요... 단위 kg...67
bmi = 21.88
정상
'''

풀이)
height = int(input('키를 입력해주세요...단위 cm...'))
weight = int(input('체중을 입력해주세요...단위 kg...'))
bmi = int((weight)/((height/100)**2))
if bmi>=35 :
    print('고도 비만')
elif 30<=bmi<35 :
    print('중등도 비만')
elif 25<=bmi<30 :
    print('경도 비만')
elif 23<=bmi<25 :
    print('과체증')
elif 18.5<=bmi<23 :
    print('정상')
else  :
    print('저체중')        

'''
Quiz

1. 딕셔너리에서 키와 값을 추가하는 방법은 무엇인가요? b
   a) dict.add(key, value)
   b) dict[key] = value  
   c) dict.insert(key, value)
   d) dict.append(key, value)


2. 딕셔너리의 모든 키를 가져오는 메서드는? a
   a) dict.keys()  
   b) dict.get_keys()
   c) dict.all_keys()
   d) dict.fetch_keys()



3. 집합에 요소를 추가하는 방법은? a
   a) set.add(element)  
   b) set.append(element)
   c) set.insert(element)
   d) set.push(element)


4. 두 집합의 합집합을 구하는 방법은? a
   a) set1.union(set2)  
   b) set1.add(set2)
   c) set1.merge(set2)
   d) set1.combine(set2)


5. 두 집합의 차집합을 구하는 방법은? a
   a) set1.difference(set2)  
   b) set1.subtract(set2)
   c) set1.remove(set2)
   d) set1.exclude(set2)


6. 집합에서 중복 요소를 제거하는 방법은? a
   a) 집합은 본래 중복 요소를 허용하지 않음  
   b) set.remove_duplicates()
   c) set.filter_duplicates()
   d) set.unique()


7. 다음 코드의 출력 결과는 무엇인가? d

set_a = {1, 2, 3}
set_b = {3, 4, 5}
result = set_a ^ set_b
print(result)

a) {1, 2}
b) {3}
c) {4, 5}
d) {1, 2, 4, 5} 


8. 다음 문자열을 리스트로 변환할 때 적절한 코드 조각은? b

text = "apple,banana,cherry"

a) list(text)
b) text.split(",")  
c) text.to_list()
d) split(text, ",")


9. 다음 문자열에서 중복된 문자를 제거하고 리스트로 변환하여 출력하는 코드는?

text = "python of program language"

k = set(text)
kk = list(k)
print(kk)


10. 다음 코드의 결과로 알맞은 것은? b

my_set = {1, 2, 3, 2, 1}
print(my_set)

a) {1, 2, 3, 2}
b) {1, 2, 3} 
c) [1, 2, 3, 2]
d) {1, 2}


11. 다음 중 딕셔너리의 특징이 아닌 것은?  b
a) 키는 중복될 수 없다.
b) 값은 중복될 수 없다. 
c) 순서가 보장되지 않는다.
d) 키는 불변형 자료형이어야 한다.


12. 출생년도를 입력받아 띠를 구하는 코드를 딕셔너리를 사용하여 코드로 작성하면? 

띠는 출생년도를 12로 나눈 후 나머지 값에 따라 결정된다 

 # 띠를 나타내는 딕셔너리
zodiac_dict = {
    0: "원숭이",
    1: "닭",
    2: "개",
    3: "돼지",
    4: "쥐",
    5: "소",
    6: "호랑이",
    7: "토끼",
    8: "용",
    9: "뱀",
    10: "말",
    11: "양"
}

# 출력 예시
출생년도를 입력하세요: 2009
당신의 띠는 소 띠입니다.

zodiac_dict = {    0: "원숭이",
    1: "닭",
    2: "개",
    3: "돼지",
    4: "쥐",
    5: "소",
    6: "호랑이",
    7: "토끼",
    8: "용",
    9: "뱀",
    10: "말",
    11: "양"}
birth_year = int(input('출생 연도를 입력하세요'))
zodiac_index = birth_year%12
zodiac_animal = zodiac_dict[zodiac_index]
print(f"당신의 띠는 {zodiac_animal}입니다.")



13. 다음 코드의 출력 결과는 무엇인가? b

x = 0
if x:
    print("True")
else:
    print("False")

a) True
b) False 
c) 0
d) None


14. 다음 코드에서 ?에 해당되는 값이  어떤 조건이 충족되면 "Pass"가 출력될까? b,c
x = ?
if x % 2 == 0:
    print("Pass")
else:
    print("Fail")

a) x가 홀수일 때
b) x가 짝수일 때 
c) x가 0일 때
d) x가 1일 때


15. 다음 코드의 출력 결과는 무엇인가? d

temperature = -5
weather_condition = '맑음'
if temperature > 30:
    print("더운 날씨입니다.")
elif 20 <= temperature <= 30:
    print("온화한 날씨입니다.")
else:
    print("추운 날씨입니다.")
    if weather_condition == '맑음':
        print("외출 시 따뜻한 옷을 입으세요.")

a) 더운 날씨입니다.
b) 온화한 날씨입니다.
c) 추운 날씨입니다.
d) 추운 날씨입니다. 외출 시 따뜻한 옷을 입으세요. 


16. 다음 코드의 출력 결과는 무엇인가? a

year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("Leap year")
else:
    print("Not a leap year")

a) Leap year   
b) Not a leap year



17. 아래의 코드는 주어진 연도가 윤년인지 아닌지를 판별하는 코드이다. 
if (    ) 의 조건식을 완성하여라. 

윤년은 다음과 같은 규칙에 따라 결정된다.
- 연도가 4로 나누어 떨어지면 윤년.
- 그러나 연도가 100으로 나누어 떨어지면 윤년이 아니다.
- 다만 연도가 400으로 나누어 떨어지면 윤년.


year = int(input("연도를 입력하세요: "))

if (                            ) :
    print(f"{year}년은 윤년입니다.")
else:
    print(f"{year}년은 윤년이 아닙니다.")

'''
풀이)
year = int(input("연도를 입력하세요: "))
if (year%4 == 0 and year%100 != 0) or (year % 400 == 0) :
    print('윤년')
else :
    print('윤년이 아니다.')