티스토리 뷰

Python

[Python] 기본 문법 정리 (4)

SeYuNi 2024. 2. 3. 04:20

if 조건문 사용하기

if 조건문은 if에 조건식을 지정하고 :(콜론)을 붙이며 다음 줄에 실행할 코드가 온다. 이때 실행할 코드는 반드시 들여쓰기를 해야 한다.

if 조건식:
     코드

만약 if 다음 줄에서 들여쓰기를 하지 않으면 들여쓰기 에러가 발생한다.

 

if 조건문의 기본 형태와 실행 흐름 알아보기

파이썬에서 if 조건문은 if 조건식: 형식으로 사용하며 그다음 줄에는 들여쓰기를 한 뒤 조건식이 만족할 때 실행할 코드를 넣는다. 특히 이 조건식이 만족할 때 실행할 코드를 if 본문(if body)이라고 부른다.

if 조건문의 기본 형태

if 조건문의 실행 흐름을 그림으로 표현하면 다음과 같은 모양이 된다.

보통 if의 조건식이 만족하면 참( True), 만족하지 않으면 거짓(False)이라고 부른다.

 

if 조건문에서 코드를 생략하기

pass라는 키워드는 아무 일도 하지 않고 그냥 넘어간다는 뜻이다. 

>>> x = 10
>>> if x == 10:
...     pass
...
>>>

 파이썬에서는 if 다음 줄에 아무 코드도 넣지 않으면 에러가 발생하므로 if 조건문의 형태를 유지하기 위해 pass를 사용한다.

 

중첩 if 조건문 사용하기

다음은 변수의 값이 10 이상이면 '10 이상입니다.'를 출력한 뒤 15이면 '15입니다.', 20이면 '20입니다.'를 출력한다.

x = 15
 
if x >= 10:
     print('10 이상입니다.')
 
     if x == 15:
         print('15입니다.')
 
     if x == 20:
         print('20입니다.')

실행 결과

10 이상입니다.
15입니다.

 

사용자가 입력한 값에 if 조건문 사용하기

x = int(input())          # 입력받은 값을 변수에 저장
 
if x == 10:               # x가 10이면
    print('10입니다.')    # '10입니다.'를 출력
 
if x == 20:               # x가 20이면
    print('20입니다.')    # '20입니다.'를 출력

실행 결과

10 (입력)
10입니다.

입력 값이 x에 저장되고, if로 x가 10인지 비교하였다. 여기서는 10을 입력했으므로 '10입니다.'가 출력된다.

 

else 사용하기

else는 if 조건문 뒤에 오며 단독으로 사용할 수 없다. 그리고 if와 마찬가지로 else도 :(콜론)을 붙이며 다음 줄에 실행할 코드가 온다.

if 조건식:
     코드1
else:
     코드2

 

if와 else의 기본 형태와 실행 흐름 알아보기

else는 if의 조건식이 만족하지 않을 때 코드를 실행한다.

조건식이 참(True)이면 if의 코드(if 본문)가 실행되고, 거짓(False)이면 else의 코드(else 본문)가 실행된다.

if와 else의 실행 흐름

 

else와 들여쓰기

else도 코드가 여러 줄일 때는 들여쓰기 깊이가 같게 만들어주어야 한다. 마찬가지로 else가 여러 줄일 때는 마지막 줄의 들여쓰기를 하지 않으면 의도치 않은 동작이 된다.

x = 10
 
if x == 10:    # x가 10이라 조건식이 참
    print('10입니다.')    # 출력
else:
     print('x에 들어있는 숫자는')
print('10이 아닙니다.')    # 출력되지 않아야 하는데 출력됨

 

if 조건문에 숫자 지정하기

숫자는 정수(2진수, 10진수, 16진수), 실수와 관계없이 0이면 거짓, 0이 아닌 수는 참이다.

if 0:
    print('참')
else:
    print('거짓')    # 0은 거짓
 
if 1:
    print('참')    # 1은 참
else:
    print('거짓')
 
if 0x1F:    # 16진수
    print('참')    # 0x1F는 참
else:
    print('거짓')
 
if 0b1000:    # 2진수
    print('참')    # 0b1000은 참
else:
    print('거짓')
 
if 13.5:    # 실수
    print('참')    # 13.5는 참
else:
    print('거짓')

 

if 조건문에 문자열 지정하기

문자열은 내용이 있을 때 참, 빈 문자열은 거짓이다.

if 'Hello':    # 문자열
    print('참')    # 문자열은 참
else:
    print('거짓')
 
if '':    # 빈 문자열
    print('참')
else:
    print('거짓')    # 빈 문자열은 거짓

값 자체가 있으면 if는 동작한다. 반대로 0None''은 False로 취급하므로 else가 동작한다.

 

elif 사용하기

elif는 else인 상태에서 조건식을 지정할 때 사용하며 else if라는 뜻이다.  ifelse와 마찬가지로 조건식 끝에 :(콜론)을 붙여야 하고, elif 단독으로 사용할 수 없다.

if 조건식:
     코드1
elif 조건식:
     코드2

 

if, elif, else를 모두 사용하기

elif와 else는 단독으로 사용할 수 없으며 ifelse 형태로 사용하거나, ifelifelse 형태로 사용한다.

if 조건식:
    코드1
elif 조건식:
    코드2
else:
    코드3

 

for와 range 사용하기

for 반복문은 range에 반복할 횟수를 지정하고 앞에 in과 변수를 입력한다. 그리고 끝에 :(콜론)을 붙인 뒤 다음 줄에 반복할 코드를 넣는다.

for 변수 in range(횟수):
     반복할 코드

for 다음 줄에 오는 코드는 반드시 들여쓰기를 해준다. 들여쓰기 규칙은 ifelifelse와 같다.

range(100)과 같이 지정하면 0부터 99까지 숫자 100개를 생성한다. 그리고 for는 in으로 숫자를 하나씩 꺼내서 변수 i에 저장하고, print를 실행한다. 즉, range(100)에서 숫자를 100번 꺼내면서 print를 실행하므로 'Hello, world!'가 100번 출력되는 것이다.

이처럼 for 반복문은 반복 횟수가 정해져 있을 때 주로 사용합니다.

for 변수 in range(횟수) → 반복할 코드로 순환하는 것을 루프(loop)라고 부른다.

 

시작하는 숫자와 끝나는 숫자 지정하기

range에 횟수만 지정하면 숫자가 0부터 시작하지만, 다음과 같이 시작하는 숫자와 끝나는 숫자를 지정해서 반복할 수도 있다.

  • for 변수 in range(시작, 끝):
>>> for i in range(5, 12):    # 5부터 11까지 반복
...     print('Hello, world!', i)
...
Hello, world! 5
Hello, world! 6
Hello, world! 7
Hello, world! 8
Hello, world! 9
Hello, world! 10
Hello, world! 11

마지막 숫자는 range의 끝나는 숫자보다 1이 작다.(끝나는 숫자는 생성된 숫자에 포함되지 않음)

 

증가폭 사용하기

range는 증가폭을 지정해서 해당 값만큼 숫자를 증가시킬 수 있다.

  • for 변수 in range(시작, 끝, 증가폭):
>>> for i in range(0, 10, 2):    # 0부터 8까지 2씩 증가
...     print('Hello, world!', i)
...
Hello, world! 0
Hello, world! 2
Hello, world! 4
Hello, world! 6
Hello, world! 8

for i in range(0, 10, 2):와 같이 range에 0, 10, 2를 넣으면 0부터 8까지 2씩 증가한다. 따라서 숫자는 0, 2, 4, 6, 8이 나오고 5번 반복한다. 여기서는 증가폭이 2이므로 8 다음에는 10이 나와야 하지만, range에 끝나는 숫자를 10으로 지정했으므로 10은 포함되지 않고 8에서 멈춘다.

 

숫자를 감소시키기

>>> for i in range(10, 0):    # range(10, 0)은 동작하지 않음
...     print('Hello, world!', i)
...

range(10, 0)과 같이 시작하는 숫자를 큰 숫자로 지정하고 끝나는 숫자를 작은 숫자로 지정하면 숫자가 감소할 것 같은데, 실행을 해보면 아무것도 출력되지 않는다. 왜냐하면 range는 숫자가 증가하는 기본 값이 양수 1이기 때문이다.

 

증가폭을 음수로 지정하면 숫자가 감소한다.

>>> for i in range(10, 0, -1):    # 10에서 1까지 1씩 감소
...     print('Hello, world!', i)
...
Hello, world! 10
Hello, world! 9
Hello, world! 8
... (생략)
Hello, world! 2
Hello, world! 1

range(10, 0, -1)은 10부터 1까지 -1씩 증가하는 숫자를 생성한다. 따라서 10부터 1까지 1씩 감소하면서 반복한다. 특히 range의 끝나는 숫자 0은 생성되는 숫자에 포함되지 않으므로 1까지만 감소한다. range는 증가, 감소에 상관없이 끝나는 숫자는 생성되는 숫자에 포함되지 않는다.

 

증가폭을 음수로 지정하는 방법 말고도 reversed를 사용하면 숫자의 순서를 반대로 뒤집을 수 있다.

  • for 변수 in reversed(range(횟수))
  • for 변수 in reversed(range(시작, 끝))
  • for 변수 in reversed(range(시작, 끝, 증가폭))
>>> for i in reversed(range(10)):    # range에 reversed를 사용하여 숫자의 순서를 반대로 뒤집음
...     print('Hello, world!', i)    # 9부터 0까지 10번 반복
...
Hello, world! 9
Hello, world! 8
Hello, world! 7
... (생략)
Hello, world! 1
Hello, world! 0

range(10)으로 0부터 9까지 숫자를 생성한 뒤 reversed를 사용하여 숫자의 순서를 반대로 뒤집었다. 따라서 9부터 0까지 10번 반복한다.

 

입력한 횟수대로 반복하기

count = int(input('반복할 횟수를 입력하세요: '))
 
for i in range(count):
    print('Hello, world!', i)

실행결과

반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 0
Hello, world! 1
Hello, world! 2

먼저 input으로 입력 값을 받아서 count 변수에 저장한다.(이때 반드시 int를 사용하여 input에서 나온 문자열을 정수로 변환해줍니다) 그리고 반복문에서는 for i in range(count):와 같이 range에 count를 넣어주면 입력받은 숫자만큼 반복된다.

 

시퀀스 객체로 반복하기

 for는 리스트, 튜플, 문자열 등 시퀀스 객체로 반복할 수 있다.

다음과 같이 for에 range 대신 리스트를 넣으면 리스트의 요소를 꺼내면서 반복한다.

>>> a = [10, 20, 30, 40, 50]
>>> for i in a:
...     print(i)
...
10
20
30
40
50

물론 튜플도 마찬가지로 튜플의 요소를 꺼내면서 반복한다.

>>> fruits = ('apple', 'orange', 'grape')
>>> for fruit in fruits:
...     print(fruit)
...
apple
orange
grape

for에 문자열을 지정하면 문자를 하나씩 꺼내면서 반복한다.

>>> for letter in 'Python':
...     print(letter, end=' ')
...
P y t h o n

문자열 'Python'의 문자가 하나씩 분리되어 출력되었다. 여기서는 print에 end=' '을 지정했으므로 줄바꿈이 되지 않고, 각 문자가 공백으로 띄워져서 출력된다.

 

뒤집어서 문자를 출력하고 싶은 경우, reversed를 활용하면 된다.

  • reversed(시퀀스객체)
>>> for letter in reversed('Python'):
...     print(letter, end=' ')
...
n o h t y P

reversed는 시퀀스 객체를 넣으면 시퀀스 객체를 뒤집어 준다.(원본 객체 자체는 바뀌지 않으며 뒤집어서 꺼내줌)

 

for 반복문은 반복 개수가 정해져 있을 때 주로 사용한다. for 반복문은 range 이외에도 시퀀스 객체를 사용할 수 있다는 점이 중요하다.

 

while 반복문 사용하기

while 반복문은 조건식을 지정하고 끝에 :(콜론)을 붙인 뒤 다음 줄에 반복할 코드와 변화식을 넣는다. 초기식은 특별한 것이 없고 보통 변수에 값을 저장하는 코드이다.

초기식
while 조건식:
     반복할 코드
     변화식

while 반복문의 동작 과정

여기서 조건식 → 반복할 코드 및 변화식 → 조건식으로 순환하는 부분이 루프(loop)이다.

 

i < 100과 같이 조건식을 지정하여 i가 100 미만일 때만 반복하고, i가 100이 되면 반복을 끝낸다. 그리고 반복할 코드의 변화식에는 i += 1로 i를 1씩 증가시켰으므로 i가 0부터 99까지 증가하면서 100번 반복하게 된다. 물론 변화식 i += 1을 풀어서 i = i + 1로 만들어도 동작은 같다.

 

초깃값을 1부터 시작하기

>>> i = 1
>>> while i <= 100:
...     print('Hello, world!', i)
...     i += 1
...
Hello, world! 1
Hello, world! 2
Hello, world! 3
...  (생략)
Hello, world! 99
Hello, world! 100

i에 1을 넣었으므로 while의 조건식은 i <= 100과 같이 지정한다. 따라서 i가 1부터 100까지 증가하므로 100번 반복하게 된다. 만약 i가 101이 되면 i <= 100은 거짓( False)이므로 반복문을 끝낸다.

 

초깃값을 감소시키기

>>> i = 100
>>> while i > 0:
...     print('Hello, world!', i)
...     i -= 1
...
Hello, world! 100
Hello, world! 99
Hello, world! 98
... (생략)
Hello, world! 2
Hello, world! 1

100부터 1까지 반복해야 하므로 먼저 i에 100을 할당한다. 그다음에 while의 조건식은 i > 0과 같이 지정하여 1까지만 반복하도록 만든다. 또한, 변화식을 i -= 1로 지정하여 변수의 값을 감소시킨다. 이렇게 하면 i가 100부터 1까지 감소하면서 반복합니다. 만약 i가 0이되면 i > 0은 거짓(False)이므로 반복문을 끝낸다.

 

입력한 횟수대로 반복하기

count = int(input('반복할 횟수를 입력하세요: '))
 
i = 0
while i < count:     # i가 count보다 작을 때 반복
    print('Hello, world!', i)
    i += 1

실행결과

반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 0
Hello, world! 1
Hello, world! 2

input으로 입력 값을 받아서 count 변수에 저장한다. 그리고 i에는 0을 할당하고, while 반복문의 조건식에서 i < count와 같이 지정하여 count에 들어있는 값만큼 반복한다. 여기서는 3를 입력했으므로 'Hello, world!'는 3번만 출력된다.

 

count = int(input('반복할 횟수를 입력하세요: '))
 
while count > 0:     # count가 0보다 클 때 반복
    print('Hello, world!', count)
    count -= 1       # count를 1씩 감소시킴

실행결과

반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 3
Hello, world! 2
Hello, world! 1

input으로 입력 값을 받아서 count 변수에 저장한다. 그리고 조건식에서 count > 0와 같이 지정하여 count에 들어있는 값만큼 반복한다. 여기서는 변수 i 대신 count를 바로 사용하므로 변화식을 count -= 1로 지정하여 반복할 때마다 count를 감소시키고 count가 0이 되면 반복문을 끝낸다.

 

반복 횟수가 정해지지 않은 경우

 while 반복문은 반복 횟수가 정해지지 않았을 때 주로 사용한다.

난수를 활용해 반복해보려면 먼저 random 모듈이 필요하다.

  • import 모듈
import random    # random 모듈을 가져옴

random.random()을 실행할 때마다 다른 실수가 출력된다.

 

정수를 생성하려면 random 모듈의 randint 함수를 사용해야 한다.

 randint 함수는 난수를 생성할 범위를 지정하며, 범위에 지정한 숫자도 난수에 포함된다.

  • random.randint(a, b)

a와 b 사이의 난수가 생성된다.

import random    # random 모듈을 가져옴
 
i = 0
while i != 3:    # 3이 아닐 때 계속 반복
    i = random.randint(1, 6)    # randint를 사용하여 1과 6 사이의 난수를 생성
    print(i)

실행 결과

5
1
4
1
1
3

while 반복문에서 i != 3과 같이 조건식을 지정하여 3이 아닐 때 계속 반복하도록 한다. 그리고 반복할 코드에서 i = random.randint(1, 6)과 같이 1과 6 사이의 난수를 생성하여 변수 i에 저장한다.

실행 결과를 보면 정수가 무작위로 생성되어 실행할 때마다 반복 횟수가 달라지는 것을 볼 수 있다. 이처럼 while 반복문은 반복 횟수가 정해져 있지 않을 때 유용하다.

 

random.choice 함수

random.choice 함수를 사용하면 시퀀스 객체에서 요소를 무작위로 선택할 수 있습니다. 다음은 1, 2, 3, 4, 5, 6이 들어있는 리스트에서 무작위로 숫자를 선택합니다.

  • random.choice(시퀀스객체)
>>> dice = [1, 2, 3, 4, 5, 6]
>>> random.choice(dice)
1
>>> random.choice(dice)
4
>>> random.choice(dice)
3

물론 random.choice 함수는 시퀀스 객체를 받으므로 리스트뿐만 아니라 튜플, range, 문자열 등을 넣어도 된다.

 

while 반복문으로 무한 루프 만들기

while True:    # while에 True를 지정하면 무한 루프
    print('Hello, world!')

실행결과

... (생략)
Hello, world!
Hello, world!
Hello, world!
Hello, world!
... (계속 반복)

while에 조건식 대신 True를 지정하면 무한히 반복하는 무한 루프가 만들어 진다. 따라서 조건식이 항상 참(True)이므로 변화식도 필요 없다.

이 스크립트 파일을 실행한 상태로 두면 'Hello, world!'는 끝나지 않고 계속 출력된다. 따라서 IDLE이나 콘솔(터미널, 명령 프롬프트)에서 Ctrl+C를 입력하여 무한 루프를 끝낸다.

 

while에 True 대신 True로 취급하는 값을 사용해도 무한 루프로 동작한다.

while 1:    # 0이 아닌 숫자는 True로 취급하여 무한 루프로 동작
    print('Hello, world!')
while 'Hello':    # 내용이 있는 문자열은 True로 취급하여 무한 루프로 동작
    print('Hello, world!')

while 반복문은 조건식이 참(True)일 때 반복하고 거짓(False)일 때 반복을 끝낸다. 특히 while 반복문은 반복 횟수가 정해져 있지 않을 때 자주 사용한다. 반면 for 반복문은 반복 횟수가 정해져 있을 때 자주 사용한다.

 

break로 반복문 끝내기

i = 0
while True:    # 무한 루프
    print(i)
    i += 1          # i를 1씩 증가시킴
    if i == 100:    # i가 100일 때
        break       # 반복문을 끝냄. while의 제어흐름을 벗어남

i가 100이 되면 반복문을 끝내는 코드이다.

continue로 코드 실행 건너뛰기

for i in range(100):       # 0부터 99까지 증가하면서 100번 반복
    if i % 2 == 0:         # i를 2로 나누었을 때 나머지가 0면 짝수
        continue           # 아래 코드를 실행하지 않고 건너뜀
    print(i)

실행결과

1
3
5
... (생략)
95
97
99

0부터 99가지 반복하면서 i가 짝수이면 continue를 실행하도록 하여 홀수만 출력된다.

 

반복문과 pass

forwhile의 반복할 코드에서 아무 일도 하지 않지만, 반복문의 형태를 유지하고 싶다면 pass를 사용하면 된다.

for i in range(10):    # 10번 반복
    pass               # 아무 일도 하지 않음
while True:    # 무한 루프
    pass       # 아무 일도 하지 않음

 

 

 

 

 

 

 

 

'Python' 카테고리의 다른 글

[Python] 클래스 (1)  (0) 2024.02.08
[Python] 람다 표현식으로 함수 만들기  (0) 2024.02.08
[Python] 기본 문법 정리 (3)  (1) 2024.02.03
[Python] 기본 문법 정리 (2)  (1) 2024.02.03
[Python] 기본 문법 정리 (1)  (1) 2024.02.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
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
글 보관함