ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬] 6. 반복문 while / for 의 이해 (feat. break와 continue)
    파이썬 Python 2019. 11. 25. 20:34

    <반복문 (loop)>

    • 반복적인 작업을 가능하게 해주는 알고리즘
    • while 문: 특정 조건을 만족하는 경우 수행 할 수 있음
    • for 문: 리스트, 문자열, 튜플 등 컬렉션 타입의 아이템을 하나씩 순회하면서 사용 가능
    • while을 사용할 경우 반복을 멈추게 하는 장치 필요
      • 그렇지 않으면 무한루프에 들어가 셀이 무한히 수행 됨. => 재부팅 필요

     

    # while 키워드

    • while 뒤의 조건이 true일 경우, 코드블록을 계속 수행
    • 조건이  false가 되면 블록 수행을 멈추고 이후 코드를 실행
    # while키워드를 사용하여 리스트의 아이템을 출력하기
    
    a = [1, 2, 5, 8,24,100]
    i = 0
    while i <len(a):
        print ('value: ', a[i], ', index: ', i)
        i += 1
        

     

    # while문과 조건문을 함께 사용하여 리스트 아이템 출력
    
    a = [1, 2,42, 5, 8, 24,100, 54]
    i = 0
    while i <len(a):
        if a[i] > 20: #20보다 큰 경우만 출력
            print ('value: ', a[i], ', index: ', i)
        i += 1
        

     

    a = [1, 2, 42, 5, 9, 24,100, 54]
    i = 0
    while i <len(a):
        if a[i] % 2: #홀수인 경우만
            print ( a[i])
        else:
            print(a[i]/2)
        i += 1
        

     

     

    #무한루프

    • while의 경우 종료되지 않도록 코드를 작성하면 블록을 빠져나올 수 없음.
    • 최대한 무한루프가 있는 코드의 사용을 지양하도록!
    while True:
        print('haha')

     

    # break

    • 반복문을 중단할 때 사용
    • 보통 조건문 안에서 사용되며 조건을 만족하는 경우 loop를 탈출시키기 위해 사용
    • loop를 중단할 경우, while 이후의 코드를 수행
    a = [1, 2, 5, 8, 24,100, 54]
    
    i = 0
    while i < len(a):
        if a[i] > 20:
            break
            
        print(a[i])
        
        i +=1
        
    print('hahaha')
    
    
    #1 2 5 8 hahaha

     

     

    # continue

    • break처럼 반복을 중단하여 빠져 나오지 않고, 조건을 만족할 경우다시 while조건으로 점프함
    • 특정한 경우에는 코드를 수행하지 않고 다음으로 건너 뛰기 위해 사용
    a = 7
    while a > 0:
        a -= 1
        if a == 5:
            continue #5는 출력되지 않음. 
        print(a)
        
        
    #6 4 3 2 1 0

     

     

    #연습문제

    1 ~ 100까지 더하기

    num = 1
    _sum = 0
    
    while num <101:
    	_sum += num
        num += 1
        
    print(_sum)
    
    #5050

     

     

    # for 키워드

    • 리스트, 문자열 등 순회 가능한 객체를 순회하면서 값을 처리할 때 사용
    • 모든 아이템이 순회되면 for 블록 종료
    a = [1, 2, 3, 4, 5]
    
    for i in a:
    	print(i, i*2)
    
    print('hahaha')
    
    
    ######################
    
    
    a = [1, 2, 3, 4, 5]
    for x in a:
        print (x, x * 2)
    print('hahaha')

     

    #문자열의 아이템 출력하기

    a = 'hello world'
    for char in a:
    	print(char)
        
        
    ########################
    
    for x in 'hello world':
    	print(x)

     

     

    #리스트 아이템 출력하기

    a = [1, 10, 3, 7, 24]
    for num in a:
    	if num % 2 == 0:
        	print(num/2)
        else: 
        	print(num+1)
            
            
    # 2 5.0 4 8 12.0

     

     

    # dict의 아이템 출력하기

    • dictionary의 경우 기본적으로 순회하게 되면 key 값을 참조
    • keys() 함수를 이용하여 key값만 순회 가능
    • values() 함수를 이용하여 value 값만 순회 가능
    • items() 함수를 이용해 tuple형태로 key, value 순회 가능

     

    a = {'korea' : 'seoul', 'japan': 'tokyo', 'canada': 'ottawa'}
    for k in a:
        print(k, a[k])   
    '''
    korea seoul
    japan tokyo
    canada ottawa
    '''
    
    
    for k in a:
        print(k)
    '''
    korea
    japan
    canada
    '''
    
    
    for value in a.values():
    	print(value)
    '''
    seoul
    tokyo
    ottawa
    '''
    
    
    list(a.items())
    # [('korea', 'seoul'), ('japan', 'tokyo'), ('canada', 'ottawa')]
    
    
    for key, value in a.items():
        print(key, value)
    '''
    korea seoul
    japan tokyo
    canada ottawa 
    '''

     

     

    # for에서 index 사용하기

    • 기본적으로for의 리스트를 사용하는 경우, 값만 추출 가능
    • enumerate 함수를 이용해 인덱스와 값 모두 사용 가능

     

    a = [1, 2, 4, 3, 5]
    for num in enumerate(a):
        print(num)
    '''
    (0, 1)
    (1, 2)
    (2, 4)
    (3, 3)
    (4, 5)
    '''
    
    
    a = [1, 2, 4, 3, 5]
    for i, val in enumerate(a):
        print (i, val)
    '''
    0 1
    1 2
    2 4
    3 3
    4 5
    '''

     

    # for에서의 break와 continue

    a = [100, 90, 80, 70, 60, 50]
    for num in a:
        if num < 80:
            break
            
        print(num)
        
    # 100 90 80
    
    
    #######################
    
    a = [100, 90, 80, 70, 60, 50]
    for num in a:
        if num >= 60 and num <= 70:
            continue
            
        print(num)
        
    # 100 90 80 50

     

    #반복문 중첩

    • 반복문도 중첩 가능
    • 내부 루프는 외부 루프가 수행되는 만큼 반복 수행 됨
    • 무한히 사용 가능
    a = [1, 2, 4]
    for i in a:
        for j in a:
            print (i * j)
     
     '''
    1
    2
    4
    2
    4
    8
    4
    8
    16
    '''
    x = [2, 3,4,5,6,7,8,9]
    y = [1,2,3,4,5,6,7,8,9]
    for i in x:
        for j in y:
            print(i, 'x', j, '=', i*j)

     


    collection 길이

    • len() 내장 함수로 계산 가능
    • 내장함수란 파이썬 내부에 구현되어 있어 import 하지 않고도 사용 가능한 함수를 의미
    • abs, len, type, range 등
    a = [1,2,3,4,5,6]
    print(a) #[1, 2, 3, 4, 5, 6]
    print(len(a)) #6
    print (len('hello world')) #11

    range 함수

    • 리스트를 쉽게 만들 수 있는 내장함수
    • 주어진 값에 따라 다양한 결과 반환
    '''
    range(10)       -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
    range(2, 10)    -> [2, 3, 4, 5, 6, 7, 8, 9]  
    range(2, 10, 3) -> [2, 5, 8]
    '''
    
    
    #1 ~ 100까지의 리스트 만들기
    a = list(range(1, 101))
    print(a)
    
    
    #1 ~ 100 사이의 5의 배수만 갖는 리스트 생성
    a = list(range(5, 101, 5))
    print(a)

     


     

    #연습문제

     

    1. 구구단 2~ 9단까지 출력하시오.

    x = 2
    
    while x <= 9:
    	y = 1
        while y <= 9:
            print(x, 'X', y, '=', x*y)
            y += 1
         x += 1
    

     

     

    2. 1~ 100 까지의 정수 중 2의 배수 혹은 11의 배수를 모두 출력하시오.

    a = list(range(1, 101))
    
    for n in a: 
    	if n % 2 == 0 or n % 11 ==0:
    		print(n)
    

     

     

    3. a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 최대값과 최소값을 찾으시오. (sorted, sort 사용 금지)

    a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 
    min = a[0]
    max = a[0]
    
    for x in a:
    	if x < min:
        	min = x
    
    	if x > max:
        	max = x
    
    print(min, max)
    #1 99

     

    4. a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하시오.

    a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
    
    #방법 1
    i = 0
    _sum = 0
    
    while i < len(a):
    	_sum += a[i]
       i += 1
       
    _mean = _sum / len(a)
    print(_mean) #37
    
    
    
    
    #방법2
    _sum = 0
    for x in a:
    	_sum += x
    _mean = _sum / len(a)
    print(mean) #37
    반응형

    댓글

Designed by Tistory.