9. for
반복문
- 반복되는 작업을 처리하기 위해 사용
- 파이썬에는 for과 while 두 가지 반복문
- for은 횟수를 기준으로, while은 조건을 기준으로 반복
for
for문의 기본 구조
for 변수 in 컨테이너(리스트 또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
- 컨테이너의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입
- 코드블록 : 반복하는 부분 ( 수행할 문장1, 2 부분)
코드블록을 구분하기 위해 콜론(:)과 들여쓰기 사용- 같은 블록은 들여쓰기 종류를 통일해야함
들여쓰기
- 들여쓰기는 선택이 아닌 필수
- 들여쓰기는 칸 수가 같아야 하고, 공백과 탭 문자를 섞어 쓰면 안 됨 (종류를 하나로 통일)
- 일반적으로 띄어쓰기 4칸을 사용
예시)
num_list = [1,2,3,4]
for i in num_list :
print (i)
1
2
3
4
range()
- for와 함께 자주 사용되는 함수(숫자 리스트를 만들어주는 함수)
- range(n)은 0부터 n전 까지의 숫자를 나열
- range(start, stop)는 start부터 stop전 까지의 숫자를 나열
a = range (5)
print (a) # range (0,5)
a=range (5)
for n in a:
print (n)
0
1
2
3
4
for n in range (5):
print (n)
0
1
2
3
4
for n in range (3,5):
print (n)
3
4
for x 2
- 반복문을 중첩해서 사용
for n in range (1,9):
for m in range (1,9):
print ('{ } x { } = { }'. format(n, m, n*m))
위를 하면 구구단 실행
반복문 중첩해서 사용할 때 두번째 for에 들여쓰기 (띄어쓰기 4칸) 해주고 print할 때 들여쓰기 두번 (띄어쓰기 4칸 x 2) 해주기
컴프리헨션
리스트를 만드는 간결한 방법
만약 빈 리스트가 있다고 하면
list = [ ]
print(list) = [ ]
위 리스트에 숫자를 추가할 때
for n in range (10) :
list.append(n+1)
위와 같은 방식으로 한다
이 경우 print(list) = [1, 2, 3, ..., 9, 10]
컴프리헨션의 방식 사용



img ref) https://wikidocs.net/22805
위의 리스트에 값을 추가하는 방법을 컴프리헨션을 이용하면
list = [n+1 for n in range (10)]
print(list) = [1, 2, 3, ..., 9, 10]
10. 연산자
할당 연산자
- a =(할당 연산자) b
- 오른쪽의 값 b를 왼쪽의 변수 a에 할당
- 복합 할당 연산자 : +=
count += 1 # count = count + 1
산술 연산자
- 숫자끼리 연산할 수 있게 하는 연산자
- 사칙연산 가능 ( + , - , *, / )
- 특수 연산자
a ** b # a의 b제곱
a // b # a나누기 b의 몫
a % b # a나누기 b의 나머지
%로 홀짝 구분하기
list = range(1,10)
for n in list :
if n % 2 == 1:
print (n, ' : 홀수')
else :
print (n, ' : 짝수')
1 : 홀수
2 : 짝수
3 : 홀수
4 : 짝수
5 : 홀수
6 : 짝수
7 : 홀수
8 : 짝수
9 : 홀수
문자열 연산자
- 문자열에 있는 연산자
- 문자열 끼리 연결 : +
- 문자열을 해당 수 만큼 반복 : *
name = "Jina"
print (name + '의 파이썬 공부') # Jina의 파이썬 공부
print (name * 5) # JinaJinaJinaJinaJina
- 문자열 연산자 혼합
name = "Jina"
print ((name+'! ') * 5) # Jina! Jina! Jina! Jina! Jina!
비교 연산자
-
비교 할 때 사용 되는 연산자
-
결과는 참(True)과 거짓(False)
-
왼쪽과 오른쪽이 같은 지 비교 : ==
print (1==1) # True print (1==2) # False
-
왼쪽과 오른쪽이 다른 지 비교 : !=
print (1!=1) # False print (1!=2) # True
-
왼쪽이 더 큰 지 비교 : >
print (1>1) # False print (1>2) # False print (2>1) # True
-
오른쪽이 더 큰 지 비교 : <
print (1<1) # False print (1<2) # True print (2<1) # False
-
왼쪽이 더 크거나 같은 지 비교 : >=
print (1>=1) # True print (1>=2) # False print (2>=1) # True
-
오른쪽이 더 크거나 같은 지 비교 : <=
print (1<=1) # True print (1<=2) # True print (2<=1) # False
논리 연산자
-
and : 둘 다 True일 때에만 True
print (True and True) # True print (True and False) # False print (False and False) # False
-
or : 한 쪽이라도 True면 True
print (True or True) # True print (True or False) # True print (False or False) # False
-
not : True면 False, False면 True
print (not True) # False print (not False) # True
멤버쉽 연산자
-
리스트, 튜플 등의 안에 해당 값이 있는 지 확인
-
in과 not in 키워드를 사용
-
in : 해당 값이 있으면 True 없으면 False
-
not in : 해당 값이 있으면 False 없으면 True
animal = ['범고래', '강아지', '고양이', '토끼', '거북이', '상어'] print ('물개' in animal) # False print ('범고래' in animal) # True print ('물개' not in animal) # True print ('범고래' not in animal) # False
11. 조건문
if
- 조건이 참인지 거짓인지 판단
- 조건에 따라 처리의 흐름을 바꿈
- if 키워드를 사용
- 참일 경우 코드블럭 실행
- 거짓일 경우 코드블럭을 넘어감
if문의 기본 구조
if 조건문 :
수행할 문장1
수행할 문장2
...
조건문을 테스트해서 True면 if문 바로 다음 문면 (if 블록)들을 수행
들여쓰기
- 코드블록을 구분하기 위해 콜론(:)과 들여쓰기 사용
- 일반적으로 띄어쓰기 4칸을 사용
name = "Jina"
if name == 'Jina' :
print ('Hello '+ name) # Hello Jina
else, elif
- elif : 이전의 if나 elif가 거짓일 경우 elif의 조건문으로 넘어감
- else : 이전의 if나 elif가 모두 거짓일 경우 else로 넘어감
number = [3,6,7,9,11,12,14,22]
for i in number:
if i % 3 == 0:
print ( i, '는 3의 배수')
elif i % 7 == 0:
print ( i, '는 7의 배수')
else:
print ( i, '는 11의 배수')
3 는 3의 배수
6 는 3의 배수
7 는 7의 배수
9 는 3의 배수
11 는 11의 배수
12 는 3의 배수
14 는 7의 배수
22 는 11의 배수
12. while
while
- while은 조건을 기준으로 반복
while문의 기본 구조
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
while문은 조건문이 참인 동안에 while문 아래의 문장이 반복해서 수행
10번 찍어 안넘어가는 나무 없다를 while문으로
treeHit = 0
while treeHit < 10 :
treeHit+=1
print ( '나무를',treeHit,'번 찍었습니다.')
if treeHit == 10 :
print ( '나무를',treeHit,'번 찍었습니다.\n나무가 넘어갑니다.')
나무를 1 번 찍었습니다.
나무를 2 번 찍었습니다.
나무를 3 번 찍었습니다.
나무를 4 번 찍었습니다.
나무를 5 번 찍었습니다.
나무를 6 번 찍었습니다.
나무를 7 번 찍었습니다.
나무를 8 번 찍었습니다.
나무를 9 번 찍었습니다.
나무를 10 번 찍었습니다.
나무를 10 번 찍었습니다.
나무가 넘어갑니다.
continue, break
-
continue : 다시 조건으로 돌아감
예시)
a=0 while a<10: a=a+1 if a % 2 == 0 : continue print (a) 1 3 5 7 9
만약 a % 2 == 0 을 만족하면 continue로 넘어감 다시 조건문으로( print (a)의 과정을 거치지 않음)
-
break : 반복문을 끝냄
예시)
coffee = 10 while coffee <= 10: print ('남은 커피', coffee, '잔') coffee = coffee-1 if coffee == 0 : print ('sold out') break 남은 커피 10 잔 남은 커피 9 잔 남은 커피 8 잔 남은 커피 7 잔 남은 커피 6 잔 남은 커피 5 잔 남은 커피 4 잔 남은 커피 3 잔 남은 커피 2 잔 남은 커피 1 잔 sold out
만약 break를 쓰지 않았다면
coffee == 0 sold out 이후에도 계속 반복문 진행
남은 커피 -n 잔 까지 쭉 진행됨 (무한 루프)
예시)
count = 0
while count < 10:
count += 1
if count < 4:
continue
print (count)
if count == 8:
break
4
5
6
7
8
count = 0 ~ 3 일 때
while True 이므로 count+1 실행,
if count < 4 True 이므로 continue로 넘어감 (print되지 않고 다시 while문으로)
count = 4 ~ 7 일 때
while True 이므로 count+1 실행,
if count < 4 False 이므로 continue로 넘어가지않고 print (count)로 넘어가서 숫자 print
if count == 8 False이므로 break하지않고 다시 while로 반복
count = 8 일 때
while True 이므로 count+1 실행,
if count < 4 False 이므로 continue로 넘어가지않고 print (count)로 넘어가서 숫자 print
if count == 8 True이므로 break 반복문 종료
'python > Python_김왼손의 미운코딩 새끼' 카테고리의 다른 글
Part 13 ~ 17 (0) | 2020.03.20 |
---|---|
Part 7 ~ 8 (0) | 2020.03.19 |
Part 6 (0) | 2020.03.19 |
Part 1 ~ 5 (0) | 2020.03.17 |
댓글