if
if True:
print('Hello') # Hello
if 10 and 9: # True나 False가 아니라 단락평가에 의해 9
print('hello') # hello
if '': # F
print('hello')
if ' ': # T
print('hello') # hello
if []: # F
print('hello')
if -1: # T
print("hello") # hello
match
text = 'Hello World'
match text:
case 'Hello':
print('Hello')
case 'World':
print('World')
case _:
print('No Match') # 'No Match'
text = 'Hello'
match text:
case 'Hello' | 'World': # or 이렇게 씀
print('World')
case _:
print('No Match')
def test(i):
match i:
case 1:
print('One')
case 2:
print('Two')
case 3 | 4:
print('Three or Four')
case _ if i > 10:
print('Greater than ten')
case _:
print('Other')
test(3) # Three or Four
test(9) # Other
test(11) # Greater than ten
for
in이랑 순회 가능한 객체와 함께 사용
vfor x in 'hi': # 순회 가능한 객체가 들어감
print(f'현재 값은 {x}입니다.')
# 현재 값은 h입니다.
# 현재 값은 i입니다.
for x in (1, 2, 3, 4, 5):
print(f'현재 값은 {x}입니다.')
# 현재 값은 1입니다.
# 현재 값은 2입니다.
# 현재 값은 3입니다.
# 현재 값은 4입니다.
# 현재 값은 5입니다.
d = {
'하나' : 'one',
'둘' : 'two',
'셋' : 'three',
}
for k in d:
print(k) # key값이 들어감
# 하나
# 둘
# 셋
for k, v in d.items(): # key와 value둘다 받으려면
print(f'{k}: {p}')
# 하나: one
# 둘: two
# 셋: three
중첩 for문
for i in [range(3), range(5), range(7)]: # i에 range(3), range(5), range(7) 순서로 들어감
for j in i: # range(3)들어갔을때는 0,1,2 range(5)일때는 0,1,2,3,4들어감
print(j)
# 0
# 1
# 2
# 0
# 1
# 2
# 3
# 4
# 0
# 1
# 2
# 3
# 4
# 5
# 6
쌍으로 받기
skill = [
('고기잡이', 100, 'SS'),
('고기팔기', 120, 'SSS'),
('낚시', 5, 'C'),
('통발', 5, 'C'),
('큰그물', 5, 'C')
]
for skillName, skillLevel, skillGrade in skill:
print(skillName, skillLevel, skillGrade
# 고기잡이 100 SS
# 고기팔기 120 SSS
# 낚시 5 C
# 통발 5 C
# 큰그물 5 C
enumerate 사용
영화누적관객수 = ['레미제라블', '뷰티풀사이트', '매트릭스', '인셉션', '어거스트 러쉬']
for i in enumerate(영화누적관객수):
print(i)
# (0, '레미제라블')
# (1, '뷰티풀사이트')
# (2, '매트릭스')
# (3, '인셉션')
# (4, '어거스트 러쉬')
for i, j in enumerate(영화누적관객수, 1):
print(f'누적관객수 {i}위! {j}!')
# 누적관객수 1위! 레미제라블!
# 누적관객수 2위! 뷰티풀사이트!
# 누적관객수 3위! 매트릭스!
# 누적관객수 4위! 인셉션!
# 누적관객수 5위! 어거스트 러쉬!
for문의 원리
__iter__() 매직 메서드가 있는지 확인함. 없으면 순회가능한 객체가 아니고 있으면 순회가능한 객체로 for문이 됨.
__iter__() 메서드가 있으면 __next__()로 하나씩 꺼내옴. StopIterationError 만나면 멈춤.
x = iter('hello') # 'hello'.__iter__() 와 같음
print(x) # <str_iterator object at 0x7cacfc5e1210>
print(next(x)) # h # x.__next__() 와 같음
print(next(x)) # e
print(next(x)) # l
print(next(x)) # l
print(next(x)) # o
print(next(x)) # StopIteration Error # for문은 StopIteration Error을 만나면 멈춤
while
이중 while문
i = 2
while i < 10:
j = 1 # while문은 중첩해서 사용할 때 초기화가 필요
while j < 10:
if j == 3:
break
print(f'{i} X {j} = {i*j}')
j += 1
i += 1
왈러스 연산자
x = (n := 10) * 2 # n에 10을 할당하고 반환
print(x) # 출력: 20
print(n) # 출력: 10
왈러스 연산자와 랜덤을 사용한 while문
import random
while (x := random.randint(0, 10)) != 7: # 7이 나올때까지 계속 x출력
print(x)
break, continue, pass
break : 바로 위 부모만 탈출
continue : 아래 코드를 실행하지 않고 다음 루프로 넘어감
pass : 걍 없다고 생각하면 됨
반복문 else
for i in range(5):
print(i)
else:
print('end')
# 0
# 1
# 2
# 3
# 4
# end
x = 5
while x < 10:
x += 1
print(x)
else:
print('end')
# 6
# 7
# 8
# 9
# 10
# end
'Python' 카테고리의 다른 글
Python(13) 클래스 심화 (1) | 2023.09.19 |
---|---|
Python(12) 클래스 (0) | 2023.09.17 |
Python(10) 리스트 컴프리헨션, 삼항 연산자 (0) | 2023.09.13 |
Python(9) 튜플, 딕셔너리, Set(집합) (0) | 2023.09.13 |
Python(8) 리스트 (0) | 2023.09.12 |