[파이썬기초] 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문을 중첩해서 사용하는 경우가 매우 빈번함
- 해당 부분은 예제 풀이만 하고 설명을 생략함
for <반복자(생략가능)> in <반복할 수 있는 것>:
<코드>
- 반복자는 생략이 가능하며, 반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 들어갈 수 있음
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
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
>>>> for character in "안녕하세요": # 문자열을 범위로 사용 가능
print(character)
'안'
'녕'
'하'
'세'
'요'
>>>> array = [273, 32, 103, 57, 52]
>>>> for element in array:
print(element)
273
32
103
57
52
- 해당 부분은 예제 풀이만 하고 설명을 생략함
예제 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
- 반복문을 벗어날 때 사용하는 키워드로, 일반적으로 무한 반복문을 만들고, 내부의 반복을 벗어날 때 많이 사용함
while <불 표현식>:
<문장>
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
- 반복문 내부에서만 사용할 수 있는 키워드로, 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=' ')
Author And Source
이 문제에 관하여([파이썬기초] 04. 반복문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@illisam/파이썬기초-04.-반복문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)