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}님 안녕!')
댓글0