[파이썬] TIL5 : For 반복문의 구조 / 리스트의 자료 구조와 내장 함수 레인지를 통한 반복문의 활용
▣ For 반복문(For Loop)
단순 반복 작업을 컴퓨터에게 맡기고 좀 더 생산적인 일에 집중하고자 만들어 낸 것이 소위 말하는 '프로그램'이라면, 반복문은 코딩의 대부분이라고 할 수 있습니다. 그중에서 대표적인 For 반복문에 대해서 살펴보겠습니다.
□ 리스트를 이용한 For 반복문
1. 기본 구조
For 반복문을 이용하여 리스트의 개별 요소에 접근할 수 있습니다. 이때의 기본 구조는 아래와 같습니다.
# For Loop
for <item> in <list_of_items>:
# Do something to each item
2. 예시
아래의 예시에서 과일 리스트의 모든 과일들을 차례대로 화면에 출력하고자 for문을 작성해 보았습니다.
fruits = ['Apple', 'Peach', 'Pear']
for fruit in fruits:
print(fruit)
print(fruits)
3. 실습 - ①
학생들의 키를 cm 단위의 정수 형태로, 일정한 간격(스페이스 한칸)을 두고 하나의 문자열로 입력하면, 학생 수와 전체 키의 합계 그리고 평균을 정수의 값으로 구할 수 있는 프로그램을 만들어 봅시다.
Enter heights of students : <170 175 180 172 177 ... >
Number of students : <학생수(정수)>
Total of heights : <키의 합계(정수)>
Average of heights : <키의 평균(정수)>
※ 힌트 : 입력된 문자열을 끊어서 리스트로 변환하기 위해 문자열 메서드 split()를 이용하고 학생수, 키의 합계, 키의 평균을 구할 때는 학습의 목적에 맞게 반드시 For 반복문을 이용하기 바랍니다.
※ 추가 실습 : For 반복문을 이용해서 코드를 모두 작성해 보았다면 이번에는 학생 수와 키의 합계를 내장 함수 len() 과 sum() 을 이용해서 구하고 평균을 계산하는 코딩을 해보길 바랍니다.
⌨️ 파이썬 온라인 컴파일러


4. 실습 - ②
학생들의 점수를 정수 형태로, 일정한 간격(스페이스 한칸)을 두고 하나의 문자열로 입력하면, 그중에서 최고 점수와 최저 점수를 구할 수 있는 프로그램을 만들어 봅시다.
Enter scores of students : <70 65 77 81 75 90 ... >
Highest score : <최고 점수>
Lowest score : <최저 점수>
※ 힌트 : 입력된 문자열을 끊어서 리스트로 변환하기 위해 문자열 메서드 split()를 이용하고 최고 점수와 최저 점수를 구할 때는 학습의 목적에 맞게 반드시 For 반복문을 이용하기 바랍니다. 획득 가능한 점수의 범위는 0 ~ 100점입니다.
※ 추가 실습 : For 반복문을 이용해서 코드를 모두 작성해 보았다면 이번에는 최고 점수와 최저 점수를 내장 함수 max() 와 min() 을 이용하여 찾는 코딩을 해보길 바랍니다.
⌨️ 파이썬 온라인 컴파일러


□ 내장 함수 range() 를 이용한 For 반복문
1. range() 이용
내장 함수 range() 는 일정 범위 내에서 정수들의 배열 데이터(Sequence data; 순서를 가지고 나열된 데이터; type() 으로 확인 시 '리스트(list)', '레인지(range)', '튜플(tuple)', '스트링(str)' 등의 클래스 유형)를 생성하는 파이썬 내장 함수입니다.
※ 내장 함수 중 배열 데이터가 인자로 입력될 수 있는 함수들에는 len(), sum(), max(), min() 등이 있으며, 특히 max()와 min()은 배열 데이터뿐만 아니라 여러 개의 대상 요소들이 다수의 인자들로 입력될 수도 있습니다.
len(range(1, 6))
sum(range(1, 6))
max(range(1, 6))
min(range(1, 6))
max(1, 2, 3, 4, 5)
min(1, 2, 3, 4, 5)
2. 기본 구조
# For Loop with range() function
for <iterator> in range(<start>, <stop>, <step>):
# Do something repeatedly (with iterator)
For 반복문에서 'for' 다음에 오는 반복자(Iterator)는 명령문 안에서 반복 이용되는 변수(Iterable variable)입니다. 그리고 range() 함수에서 첫 번째 인자는 시작 지점의 정수를 의미하고, 두 번째 인자는 끝 지점의 정수, 그리고 세 번째 인자는 이들 정수 사이에서 증감이 되는 간격을 나타내는 값입니다.
이 때 첫 번째 인자는 대상에 포함되고, 두 번째 인자는 제외됩니다. 즉 <start> 이상 ~ <stop> 미만의 범위가 설정되는 것입니다. 특히, 첫번째 인자와 세 번째 인자는 생략이 가능하며 이때 설정된 기본값은 첫번째 인자는 0, 세번째 인자는 1입니다.
3. 예시
① 1 이상 10 미만의 정수 범위 내의 홀수 출력하기
for number in range(1, 10, 2):
print(number)
② 1 이상 100 이하의 모든 정수들의 합 구하기
total = 0
for number in range(1, 101):
total += number
print(total)
③ 리스트에서 각 개별 요소들의 인덱스와 값 출력하기
fruits = ['Apple', 'Banana', 'Cherry']
for index in range(len(fruits)):
print(f'{index} : {fruits[index]}')
4. 실습 - ①
1 이상 100 이하의 정수 중에서 짝수들의 합을 구하고자 합니다. For 반복문과 range() 함수를 이용해서 구해 봅시다.
Sum of even numbers between 1 and 100 :
<짝수들의 합>
참고로 짝수로 구성된 숫자들의 수열을 만드는 방법에는 range() 함수의 세 번째 인자를 활용하거나, range() 함수로 생성한 연속된 범위의 정수들을 차례로 2로 나누어 짝수인지 아닌지 확인해 보는 방법이 있습니다. 그리고 짝수들의 합은 학습의 목적에 맞게 반드시 For 반복문을 이용하기 바랍니다.
※ 추가 실습 : For 반복문을 이용해서 코드를 모두 작성해 보았다면 이번에는 sum()을 이용해서 짝수들의 합을 구하고 결과를 비교해보길 바랍니다.
⌨️ 파이썬 온라인 컴파일러



5. 실습 - ②
1 이상 15 이하의 정수들을 차례대로 화면에 출력하는데, 단 3의 배수일 경우 'Fizz'를 대신 출력하고, 5의 배수일 경우에는 'Buzz'를 대신 출력하며, 3과 5의 배수 모두에 해당될 경우에는 'FizzBuzz'를 출력하도록 해봅시다.
1
2
Fizz
4
Buzz
...
⌨️ 파이썬 온라인 컴파일러

▣ 에러
아래는 실습을 하는 과정 중에 만날 수 있는 에러와 예시입니다.
1. 값 에러
# ValueError: invalid literal for int() with base 10: '170.5'
print(int('170.5'))