티스토리 뷰

 


4.7 중첩 if 문과 다중 if-elif-else 문(Nested if and Multi-Way if-elif-else Statements)

 

- if 문 안에다가 다른 if 문을 선언하여 중첩 if 문을 만들 수 있다.

- 중첩 if 문의 횟수 제한은 없다.

 

if i > k:

if j > k:

print("i and j are greater than k")

else:

print("i is less than or equal to k")

 

- 중첩 if 문은 다양한 대안을 구현하는 데 사용 할 수 있다.

- 예를 들어, 점수에 따라 학점을 변수에 다르게 할당하는 프로그램을 짤 경우 이용을 할 수 있다.

 

 

* 학점 프로그램  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
score = eval(input("점수입력>>"))
 
if score >= 90.0:
    grade = 'A'
else:
    if score >= 80.0:
        grade = 'B'
 
    else:
        if score >= 70.0:
            grade = 'C'
 
        else:
            if score >= 60.0:
                grade = 'D'
 
            else:
                grade = 'F'
 
printI(grade)
cs

 

* 학점프로그램 과정

 

- 위 처럼 if-else 문을 이용해 만들 수도 있지만, if-elif-else문을 이용해 더 깔끔한 형태로 만들 수 있다.

- 위와 아래의 두 학점 프로그램은 동등한 의미이다.

- 실제로 if-else 문을 이용하는거 보다 if-elif-else 문을 이용하는 것이 더 가독성이 좋고 편하다.

 

* if-elif-else문을 이용한 학점프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
score = eval(input("점수 입력>>"))
 
if score >= 90.0:
    grade = 'A'
elif score >= 80.0:
    grade = 'B'
elif score >= 70.0:
    grade = 'C'
elif score >= 60.0:
    grade = 'D'
else:
    grade = 'F'
 
print(grade)
cs

 

- 이러한 스타일의 코딩 방식을 다중 if문(multi-way if)이라고 부른다.

- 다중 if문은 if-elif-else문(elif = else if의 준말)을 이용한다.

 

* 출생년도에 따른 띠 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
year = eval(input("Enter a year: "))
 
zodiacYear = year%12
 
if zodiacYear == 0:
    print("monkey")
 
elif zodiacYear == 1:
    print("rooster")
 
elif zodiacYear == 2:
    print("dog")
 
elif zodiacYear == 3:
    print("pig")
 
elif zodiacYear == 4:
    print("rat")
 
elif zodiacYear == 5:
    print("ox")
 
elif zodiacYear == 6:
    print("tiger")
 
elif zodiacYear == 7:
    print("rabbit")
 
elif zodiacYear == 8:
    print("dragon")
 
elif zodiacYear == 9:
    print("snake")
 
elif zodiacYear == 10:
    print("horse")
 
else :
    print("sheep")
 
cs

 

4.8 선택문에서 흔히 발생하는 오류들(Common Errors in Selection Statements)

- 선택문에서 발생하는 대부분의 오류들여쓰기(identation)에서 발생한다.

 

*예제 1

radius = -20

if radius >= 0:

area = radius * radius * math.pi

print("The area is", area)

*예제 2

radius = -20

if radius >= 0:

area = radius * radius * math.pi

print("The area is", area)

 

- 예제 1의 경우 print 문이 if문 블록(block)밖에 작성되어 있는 상태이고, 예제 2의 경우 if문 블록(block)안에 작성되어 있는 상태이다.

- 들여쓰기(identation) 하나로 코드의 의미가 완전히 달라지기 때문에 주의해서 작성하여야 한다.

- 부울 값(boolean value)를 담아야 하는 경우 아래와 같이 코드를 작성하면 더 간결하고 보기 좋다.

 

* 코드 작성 tip

if number % 2 == 0:
    even = True
else:
    even = False

↓ 동등한 의미이지만 아래의 코드가 더 간결하고 보기 좋다.

even = number % 2 == 0

 

- if문elif 문차이점을 확인할 수 있는 문제로 아래의 예제를 실행시켜보자.

- input으로는 14, 15, 30을 입력해보고 차이점을 확인해보면 이 두 명령문의 차이점을 알 수 있다.

 

*

1
2
3
4
5
6
number = eval(input("Enter the number: "))
 
if number % == 0:
    print(number, "is even")
elif number % == 0:
    print(number, "is multiple of 5")
cs

*

1
2
3
4
5
6
number = eval(input("Enter the number: "))
 
if number % == 0:
    print(number, "is even")
if number % == 0:
    print(number, "is multiple of 5")
cs

*

 

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

댓글