본문 바로가기

작업 공간/프로그래밍 [파이썬 기초] 6. 반복문 for, while / 조건문 if

by 서울나기 2020. 1. 22.

1. for문

횟수를 기준으로 반복하는 방법.

for 변수 in 순서열 :
   실행할 명령1
   실행할 명령2
         ...
순서열의 값을 변수에 넣고 명령을 반복한다. 순서열의 값이 다 떨어지면 반복이 종료된다.
my_list = [1, 2, 5, 7, 9]

for count in my_list: # 반드시 끝에 콜론(:)을 넣어야 한다.
	print(f'횟수: {count}') # 반드시 들여쓰기를 해야한다.

실행 값

순서열에는 리스트, 튜플뿐 아니라 문자도 쓸 수 있다. 이경우는 스펠링 하나씩 변수에 들어가게 된다.

my_list = 'Hello World'

for count in my_list:
	print(f'문자: {count}')

실행 값

range() 함수

파이썬 내장 함수로 숫자를 입력받아서 카운트를 하는 함수이다.

range(stop)
for count in range(3):
	print(count) # 순서대로 0, 1, 2 출력, 인덱싱에서 보았듯 컴퓨터의 순서는 0 부터이다.
    
print(range(3)) # range(0, 3) 레인지형 객체가 생성된다. 0을 시작으로 3번째까지라는 의미.
print(list(range(3))) # 강제로 리스트로 바꿔보면 [0, 1, 2]가 생성된다.

range에는 2개의 입력 값을 넣을 수도 있다. 입력 값은 콤마로 구분한다.

range(start, stop) start 값 ~ stop 바로 전까지
for count in range(0, 3):
	print(count) # 0, 1, 2 출력
    
for count in range(5, 10):
	print(count) # 5, 6, 7, 8, 9 출력

 

for문 중첩

for문은 중첩해서 사용할 수 있다.

for j in range(2):
	for i in range(2):
		print(f'i:{i} j:{j}')
        
# range(2)는 0, 1이 들어가므로 j = 0, i = 0 이 된다. for i 에서 1일 들어가고 j = 0, i = 1이 된다. 다시 처음으로 돌아가 j = 1 이 들어가고 다시 리셋되어 i = 0이 들어간다.

결과 값

# for문 중첩을 이용한 구구단 문제

for j in range(1,10): # 1 ~ 9단
	for i in range(1,10): # 1 ~ 9까지 곱
		print(f'{j} * {i} = {j*i}')

2. 조건 판단

논리 연산자인 Boolian은 참과 거짓(True/False)으로 조건을 판단한다. True/Flase는 키워드(미리 예약된 이름)이다. 첫 문자는 대문자로 사용해야 한다.

# 참과 거짓 

my_bool1 = True
my_bool2 = False
my_bool3 = 1 < 2
my_bool4 = 1 == 2

print(my_bool1, my_bool2, my_bool3, my_bool4) #True False True False 출력

 

비교 연산자

좌항과 우항을 비교해서 조건이 맞으면 True, 틀리면 False이다.

== 같다 >, < 크다, 작다
!= 다르다 >=, <= 크거나 같다, 작거나 같다
my_cmp1 = 1 < 2 # 1이 2보다 작은가? 참
my_cmp2 = 1 == 3 # 1과 3이 같은가? 거짓
my_cmp3 = 2 >= 1 > 0 # 2가 1보다 크거나 같고 1이 0보다 큰가? 참
my_cmp4 = 7 <= 4 # 4보다 작거나 같은가? 거짓

print (my_cmp1, my_cmp2, my_cmp3, my_cmp4) # True False True False 출력

여담이지만 Ligatures를 지원하는 폰트라면 아래와 같이 표시된다.

요게 이쁘다.

* ~ in ~

앞의 문자열이 뒤의 문자열 안에 있는가? 판단하는 비교 연산자.

print('world' in 'Hello, world') # Hello, world 안에 world가 있는가? True
print('tanos' in 'Hello, world') # Hello, world 안에 Tanos가 있는가? False

 

논리 연산자

A and B / A 그리고 B도 참이어야 참 (둘 다)
A or B / A 또는 B가 참이면 참 (둘 중 하나)
not True / 참이 아니므로 거짓
not False / 거짓이 아니므로 참
my_con1 = True and True
my_con2 = True and False
my_con3 = True or False
my_con4 = False or False
my_con5 = not True
my_con6 = not False

print(my_con1, my_con2, my_con3, my_con4, my_con5, my_con6)
# True False True False False True 출력

# 숫자를 대입해 보면
my_con1 = 1 < 2 and 4 < 5 # 2가 1보다 크므로 참, 5가 4보다 크므로 참, True and True = True
my_con2 = 2 <= 2 and 2 > 5 # True and False = False
my_con3 = 1 == 1 or 5 < 4 # True or False = True
my_con4 = 4 > 5 or 1 >= 2 # False or False = False
my_con5 = not 1 == 2 # not False = Ture

print(my_con1, my_con2, my_con3, my_con4, my_con5)
# True False True False True 출력

3. if문

if문은 만약~ 라면을 뜻하는 조건문이다.

if 조건:
   실행할 명령1
   실행할 명령2
         ...
name = '팽수'
if name == '팽수':
	print(f"안녕하십니꽈! 저는 {name}입니닷!") # 안녕하십니꽈! 저는 팽수입니닷! 출력
if name == '사람':
	print(f"안녕하십니꽈! 저는 {name}입니닷!") # 거짓이므로 출력되지 않음

 

elif, else

elif와 else는 if의 조건이 거짓이면 실행되는 명령어이다.

- elif의 경우는 조건이 붙어서 if가 거짓이고 elif의 조건이 참일 때 실행된다.

- else는 if와 elif의 조건이 모두 거짓일 때 마지막에 실행된다.

- if와 else를 붙여서 쓸 수 있고 혹은 3개 모두 같이 쓸 수 있다.

if 조건:
   실행할 명령1
   실행할 명령2
         ...
elif 조건:
   실행할 명령1
   실행할 명령2
         ...
else:
   실행할 명령1
   실행할 명령2
         ...
name = '팽수'

# if가 거짓이일때
if name == '사람':
	print('저는 사람입니닷!') # 팽수는 사람이 아니므로 실행되지 않는다.
else:
	print('저는 100만 유튜버입니닷!') # if가 거짓이므로 마지막에 실행된다.

# if가 거짓이고 elif가 참일 때
if name == '사람':
	print('저는 사람입니닷!') # 팽수는 사람이 아니므로 실행되지 않는다.
elif name == '팽수':
	print('저는 팽수입니닷!') # 참이므로 실행
else:
	print('저는 하꼬 유튜버입니닷!') # elif가 참이므로 실행되지 않는다.
    
# if와 elif 둘다 거짓일 때
if name == '사람':
	print('저는 사람입니닷!') # 팽수는 사람이 아니므로 실행되지 않는다.
elif name == '팽귄':
	print('저는 팽귄입니닷!') # 팽수는 팽귄이 아니므로 실행되지 않는다.
else:
	print('저는 100만 유튜버입니닷!') # if와 elif가 거짓이므로 마지막에 실행된다.

 

* input() 함수

사용자 입력을 받는 내장 함수. 입력 값은 문자열로 받아온다. 

변수 = input(내용)
변수 = int(input(내용)) #숫자로 바꾸고 싶으면 int()를 이용한다.
name = input('이름이 무엇입니까?: ') # 문자를 입력받는다.
age = int(input('태어난 연도를 입력하세요: ')) # 숫자를 입력받는다.

if 2020 >= age:
  print('한국나이로 {}세 이시군요!'.format(2020-age+1))
  print('만 나이는 %s세 이시군요!'%(2020-age))
  print(f'{name}님 나이는 숫자에 불과하답니다.') # 복습! 이 3개의 포메팅 방식은 모두 같은 역할을 한다.
else:
  print(f'잘못 입력하셨습니다.')

결과 값

 

* 컴프리헨션 comprehension

for문과 if문을 압축해 간결하게 만드는 방법.

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_nums = []
for number in nums:
	if number % 2 == 1:
		odd_nums.append(number)
print(odd_nums)

'''
아래와 같이 압축 할 수 있다.
odd_nums = [number]의 값을 넣어야 한다.
odd_nums = [number for number in nums] for 문을 이용하여 nums 리스트를 대입하고
odd_nums = [number for number in nums if number % 2 ==1] 만약 홀수라면 number에 값을 넣어라

위의 2 ~ 5 까지 코드를 한줄로 줄일 수 있다.
'''

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_nums = [number for number in nums if number % 2 == 1]
print(odd_nums)

4. while문

for문이 횟수를 기준으로 반복을 했다면 while은 조건을 기준으로 반복하는 반복문이다.

while 조건:
   실행할 명령1
   실행할 명령2
         ...
count = 0
while count < 3: # count가 3보다 작을 때까지 반복
	print('횟수 :', count)
	count += 1 # count = count + 1 줄임. conut = 0 + 1 이므로 count = 1

 

continue, break

while문 반복을 돌고 있을 때 continue를 만나면 다시 조건문으로 돌아간다.

break를 만나면 반복문이 종료된다.

# continue 예시
count = 0
while count < 5:
	count += 1
	if count % 2 == 1: # 2로 나눠서 1이 남는다면 홀수
		continue # 홀수면 while의 조건문으로 돌아간다.
	print(count) # if 조건이 짝수면 count 출력 (짝수만 출력하는 코드)
    
#break 예시
while True:
	name = input('너의 이름은?:')
	if name == '종료': # 종료라는 글자가 나오면 아래 명령어 실행
		print('종료합니다.')
		break # 반복문 종료
	print(f'{name}님 안녕!')

결과 값

댓글