Part 9 ~ 12

Jina·2020년 2월 28일
0

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 반복문 종료

0개의 댓글