본문 바로가기
python/Python_김왼손의 미운코딩 새끼

Part 9 ~ 12

by 2cong 2020. 3. 20.

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

ref) https://wikidocs.net/22

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

멤버쉽 연산자

  • 리스트, 튜플 등의 안에 해당 값이 있는 지 확인

  • innot 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 번 찍었습니다.  
나무가 넘어갑니다.

ref) https://wikidocs.net/21

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)의 과정을 거치지 않음)

ref) https://wikidocs.net/21

  • 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 잔 까지 쭉 진행됨 (무한 루프)

ref) https://wikidocs.net/21


예시)

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

댓글