[파이썬기초] 04. 반복문

1. for문

for <반복자(생략가능)> in <반복할 수 있는 것>:
	<코드>
  • 특정한 코드를 여러번 반복할 필요가 있을 때 사용하는 구문
    • 반복자는 생략이 가능하며, 반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 들어갈 수 있음

1.1 range()를 이용

1.1.1 range() 사용 기본

  • C언어에서 for문의 반복 횟수로 범위를 정해서 수행했던 것과 마찬가지로 파이썬에서도 range()를 이용하여 범위 지정 가능
  • range(start, end, step)의 형태를 이용하여 반복문의 횟수나 반복자의 값을 특정하게 지정할 수 있음
    • step 생략 시 1이 default값임
>>>> for _ in range(5):  #단순히 n번 반복할 것이며, 반복자가 필요없을 때 _로 생략 가능
	 	print("Hello, Pyhton")
Hello, Python
Hello, Python
Hello, Python
Hello, Python
Hello, Python
>>>> sum = 0
>>>> for i in range(1, 10, 2): # step을 설정하여 range를 10미만의 홀수로 지정 가능
		sum += i
>>>> print(sum)
25

1.1.2 역반복문

  • range()의 매개변수를 세 개 사용하여, step을 음의 값으로 설정하고, start > end가 되도록 매개변수를 설정하여 역반복문을 수행할 수 있음
>>>> for i in range(4, 0-1, -1): # 0-1로 한 이유는 반복변수를 0까지 출력하기 위함 
		print("반복 변수: {}".format(i))
반복 변수: 4
반복 변수: 3
반복 변수: 2
반복 변수: 1
반복 변수: 0
  • 다른 방법으로는 reversed()를 적용하여 range()로 만들어지는 범위를 함수를 적용해 뒤집는 것을 의미
>>>> for i in reversed(range(5)): 
		print("반복 변수: {}".format(i))
반복 변수: 4
반복 변수: 3
반복 변수: 2
반복 변수: 1
반복 변수: 0

1.2 리스트와 문자열을 이용

  • for 반복문은 리스트에 있는 요소 하나하나가 element라는 변수에 들어가며, 차례대로 반복하게 됨
>>>> for character in "안녕하세요": # 문자열을 범위로 사용 가능
		print(character)
'안'
'녕'
'하'
'세'
'요'
>>>> array = [273, 32, 103, 57, 52]
>>>> for element in array:
		print(element)
273
32
103
57
52

1.3 nested-for문

  • 중첩반복문이라고도 하며, for문을 중첩해서 사용하는 경우가 매우 빈번함
    • 해당 부분은 예제 풀이만 하고 설명을 생략함

예제 1. 구구단 출력

>>>> for i in range(2,10):
		for j in range(1,10):
        	print('{} * {} = {}'.format(i, j, i*j), end='\t')

예제 2. 2이상 100이하의 소수 출력

>>>> for n in range(2, 101):
        cnt = 0
        for i in range(2, n):
            if n%i == 0:
                cnt += 1
                break
        if cnt==0:
            print(n,end=' ')

예제 3. list_of_list = [[1, 2, 3], [4, 5, 6, 7], [8, 9]] 내에 있는 모든 숫자들을 하나하나 출력하는 프로그램 작성

>>>> list_of_list = [[1, 2, 3], [4, 5, 6, 7], [8, 9]]
>>>> for i in range(len(list_of_list)):
		for j in range(len(list_of_list[i])):
    		print(list_of_list[i][j])

2. while문

while <불 표현식>:
	<문장>
  • 위와 같은 형태를 가지는 구문으로, if문과 비슷한 형태를 가지나 반복문이라는 차이점이 있음
  • for와 동일하게 사용되며, 불 표현식이 참인 동안 문장이 반복적으로 실행됨
>>>> i = 0
>>>> while i < 10:
		print('{}번째 반복입니다.'.format(i))
        i += 1
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
6번째 반복입니다.
7번째 반복입니다.
8번째 반복입니다.
9번째 반복입니다.

>>>> list_test = [1, 2, 1, 2]
>>>> value = 2
>>>> while value in list_test:
		list_test.revmove(value)
>>>> list_test
[1, 1]
  • 만약 불 표현식True를 넣을 경우, 무한하게 반복되므로 프로그램이 종료되지 않음
i = 0

while True: 
	print('{}번째 반복문입니다.'.format(i))
    i += 1
  • 따라서 프로그램이 종료될 수 있도록 ctrl+c를 눌러 강제종료를 하거나 탈출조건을 반드시 추가해줘야함
i = 0
input_text = 1

while input_text: # 초기 input_text의 값이 0이 아니므로 항상 참 -> 무한반복
	print('{}번째 반복문입니다.'.format(i))
    i += 1
    
    input_text = input('종료하시겠습니까? [Y/N]')
    if input_text in ['y', 'Y']:
    	input_text = 0
  • input_text를 조건에 넣지 않고, 조건부에 True를 넣고 싶다면 어떻게 해야할까?

3. break 키워드/continue 키워드

  • 반복문 내부에서만 사용할 수 있는 키워드로, for문과 while문 모두 사용가능
  • 무한반복문 혹은 일반 반복문 내에서, 특정 코드를 생략하거나 반복문을 도중에 탈출하고 싶을 때 사용하는 키워드
  • 프로그램의 제어를 효율적으로 하는데 편리하게 사용할 수 있으나 너무 많이 사용되는 경우 제어의 흐름에 일관성이 없어져 프로그램을 이해하는데 어려워지므로 제한적으로 사용하는 것이 좋음

3.1 break

  • 반복문을 벗어날 때 사용하는 키워드로, 일반적으로 무한 반복문을 만들고, 내부의 반복을 벗어날 때 많이 사용함

예제 1. 사용자의 나이를 입력받아 출력하되, 0 이하의 값 입력 시 재입력을 받도록 하라

while True:
	age = int(input('나이 입력: '))
    if age < 0:
		print('0이상의 값만 유효합니다.')
    else:
    	break
        
print('당신의 나이는 {}세입니다.'.format(age))

예제 2. 1부터 n까지 합계를 구하는 프로그램을 작성하되, n의 값이 1보다 작으면 재입력을 받도록 하라

while True:
    n = int(input('합계를 구할 양의 정수를 입력하세요: '))
    if n > 1: break
    	
sum = 0
    
for n in range(n+1):
    sum += n

print('1부터 {}까지의 합은 {}'.format(n, sum))
  • 무한반복문을 벗어나는 용도 외에도, 반복문을 수행하다가 특정 조건이 성립하면 반복문을 벗어날 수 있도록 구문을 작성하는 용도로도 사용 사능

예제 3. 입력된 문자열의 각 문자들을 출력하되, 숫자가 나오면 출력을 종료하는 프로그램을 작성하라

str = input('문자열을 입력하세요: ')

for i in range(len(str)):
	if '0' <= str[i] <= '9':
    	print('{}번째 문자가 숫자 {}이므로 출력을 중도 종료합니다.'.format(i+1, str[i]))
        break
    else:
   		print(str[i])   

3.2 continue

  • 현재 반복을 생략하고 다음 반복으로 넘어갈 때 사용하는 키워드
  • break는 해당 키워드를 만나면 곧바로 반복문을 탈출한다면, continue를 만나면 반복문 내에 continue다음에 있는 문장들은 생략하고 곧바로 다음 반복으로 넘어감

예제 1. 입력된 문자열의 각 문자들을 출력하되, 숫자를 제외한 모든 문자열을 출력하는 프로그램을 작성하라

str = input('문자열을 입력하세요: ')

for i in range(len(str)):
	if '0' <= str[i] <= '9':
        continue
    print(str[i])

예제 2. 1부터 n까지 모든 숫자를 출력하되, 3, 6, 9가 포함된 숫자에는 숫자 대신 '짝'을 출력하라

n = int(input('숫자를 입력하세요: '))

for i in range(1, n+1):
	if i%10 in [3, 6, 9]:
    	print('짝', end=' ')
        continue
    print(i, end=' ')

좋은 웹페이지 즐겨찾기