Lee's Grow up

[Python/파이썬] 제어 - 조건문, 반복문 / if, for, while 본문

PROGRAMMING/Python

[Python/파이썬] 제어 - 조건문, 반복문 / if, for, while

효기로그 2020. 10. 6. 13:35
반응형

해당 내용은 Pythone 공식 문서를 참조하여 작성하였습니다. 작성 기준 버전은 3.8.6입니다.

공식문서 : docs.python.org/3/tutorial/index.html

1. if 문


파이썬도 타 언어와 마찬가지로 조건을 판단하기 위해 if 문법을 제공해준다. 기본문법은 아래와 같다.

x = int(input("Enter Integer : "))

if x % 2 == 0:
    print("even")
else:
    print("odd")

내용은 입력 받은 값을 단순하게 홀수냐, 짝수이냐 판별해주는 조건문이다.
파이썬은 조건문 뒤에 :을 붙이며, 수행할 코드를 들여쓰기로 구분해줘야한다 ( 띄어쓰기 4칸 또는 tab )
해당 규칙을 지키지 않으면 SyntaxError가 발생한다.
위 내용을 조건부 표현식으로 가독성 좋게 아래와 같이 표현이 가능하다.

x = int(input("Enter Integer : "))
print("even") if x % 2 == 0 else print("odd")
다중 조건

위 예제에서는 조건이 참이냐, 거짓이냐 2가지로만 판별 가능하다. 파이썬도 타 언어와 마찬가지로 다중 조건을 줄 수 있으며, 키워드로는 elif를 사용한다. else if의 줄임말이다. 이는 파이썬이 지향하는 간결한 문법이며 과도한 들여 쓰기를 방지해 가독성을 향상 시켰다고 문서는 말한다.

menu = int(input("Select Menu 1. 아메리카노, 2. 라떼, 3. 카페모카 (번호로 선택 ): "))

if menu ==  1:
    print("아메리카노")
elif menu == 2:
    print("라떼")
elif menu == 3:
    print("카페모카")
else:
    print("없는 메뉴입니다.")

또한, elif로 대체가 가능하기 때문에 타 언어처럼 switch문이 존재하지 않는다.
번외로 조건이 너무 길어지면, 가독성이 안좋아 지기 때문에 아래처럼 딕셔너리를 활용한 사용도 가능하다. 결과는 동일하다

def switch(menu):
    return {1:"아메리카노", 2:"라떼", 3:"카페모카"}.get(menu,"없는 메뉴입니다.")

print(switch(4))

이러한 조건문에서 사용되는 비교 연산자는 ( <, >, ==, !=, <=, >= )가 있으며 조건을 판단하는 연산자로는 ( and, or, not )가 있다.

마지막으로 리스트, 튜플, 문자열, 딕셔너리인 경우 in 키워드를 통해 조건문을 쉽게 작성할 수 있다.

x = int(input("Select Menu 1. 아메리카노, 2. 라떼, 3. 카페모카 (번호로 선택 ):"))
menu = {1:"아메리카노", 2:"라떼", 3:"카페모카"};
if x in menu:
    print(menu[x])
else:
    print("없는 메뉴입니다.")

for 문


반복을 위한 구문입니다. 기본적으로 forin 키워드를 사용하며 아래와 같은 기본 구조를 가집니다.

for w in words : print(w)

일련의 숫자를 반복해야 하는 경우 range() 내장함수를 같이 사용합니다.
3개의 인수를 넘겨줄 수 있으며, 각각 시작 값, 종료 값, 단계로 구분됩니다. 인수로 음수도 가능합니다.

range(5, 10) # 5, 6, 7, 8, 9
range(0, 10, 3) # 0, 3, 6, 9
range(-10, -100, -30) # -10, -40, -70

다만 range()를 통해 반환된 객체는 list처럼 동작하지만, 실제론 리스트가 아니기 때문에, 공간을 절약할 수 있습니다. 그래서 때로는 enumerate() 기능을 사용하는 것이 편리합니다.

ranage()가 반환해주는 객체를 반복 가능하다고 표현하며, 반복 가능한 함수에서 바로 사용 가능합니다.

sum(range(5))  # 0 + 1 + 2 + 3 + 4 

리스트로 만들기 위해선 아래와 같이 사용합니다.

list(range(5)) # [0, 1, 2, 3, 4]

반복문은 리스트 안에 사용(List comprehension)이 가능합니다. 또한 리스트 내포에는 조건문도 사용 가능합니다.

numbers = [1, 2, 3, 4, 5]
odd = [num for num in numbers if num % 2 != 0]
break, continue, else

파이썬은 반복문에서도 else 키워드가 사용 가능합니다. else 구문의 실행문장은 break문에 의해서 루프가 종료되는 경우에는 실행하지 않습니다. 아래와 같이 사용 가능합니다. ( 소수 판별 )

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n // x)
            break
    else:
        print(n, 'is a prime number')
# 2 is a prime number
# 3 is a prime number
# 4 equals 2 * 2
# 5 is a prime number
# 6 equals 2 * 3
# 7 is a prime number
# 8 equals 2 * 4
# 9 equals 3 * 3

continuebreak문처럼 반복문 전체를 탈출하는게 아닌, 다음 요소로 넘어갈 때 사용하는 키워드입니다.

while 문

whilefor 처럼 반복문으로 사용됩니다. 조건이 참일 경우 반복하는 반복문입니다.

a = 0
result = 0
while a < 10:
    result += a
    a += 1
print("sum :", result)

마찬가지로 break,continue를 사용할 수 있습니다.

반응형
Comments