새소식

Programming/Python

[Python] Python Loops

  • -

파이썬 반복문

[파이썬 리스트로 for 반복문 사용하기]

오늘은 루프에 대해서 알아보자.

 

첫 번째로 알아볼 루프 유형은 for 반복문이다.

for item in list_of_items:
	#Do something to each item

 

for 반복문을 사용하면 리스트의 각 항목을 순회하며

각 개별 항목에 대해 몇 가지 작업을 수행할 수 있다.

 

직접 코드를 작성해서 확인해보자.

 


fruits = ["apple", "Peach", "Pear"]

이 리스트의 각 항목에 개별적으로 접근하여 하나씩 출력하고 싶다면

for 문을 사용해야 한다.

fruits = ["apple", "Peach", "Pear"]

for fruit in fruits:
    print(fruit)

이렇게 하면 각 항목에 개별 접근이 가능하다.

 

아직 감이 잘 안온다면 fruit을 다른 이름으로 변경해서 실행시키며 이해해보자.

 

이 코드의 작동방식은 아래와 같다.

fruits 리스트를 가져와 각 항목에 fruit이라는 변수 이름을 할당하는 것이다.

 

따라서 처음 실행될 때 fruit은 apple과 같다.

두 번째 실행 될 때는 Peach,

세 번째 실행되면 Pear이다.


많은 숫자들을 모두 더하고 싶다면 어떻게 해야할까?

지금까지 배운 지식을 이용해 +=를 사용하면 될까?

 

물론 그 방법도 맞지만 하나 하나 += 를 붙이는 건 조금 귀찮을 거 같다.

 

이때 사용할 수 있는 것이 파이썬 내장 함수 중 하나인 sum이다.

 

sum에는 리스트를 포함한 모든 반복 가능한 데이터 타입을 넣을 수 있다.

 

직접 코드를 실행해서 알아보자.

student_scores = [150, 142, 185, 120, 171, 184, 149, 24, 59, 68]

print(sum(student_scores))

 

이러한 sum을 사용하는 것 대신 for 문을 이용해서 더하는 것도 가능하다.

student_scores = [150, 142, 185, 120, 171, 184, 149, 24, 59, 68]

total = 0
for score in student_scores:
    total += score
print(total)

 

student_scores에서 최댓값을 찾고 싶다면 어떻게 할까?

 

우리는 max를 사용해 간편하게 최대값을 찾을 수 있다.

이것은 student_scores와 같은 리스트를 입력으로 받아들이는 내장 함수이다.

student_scores = [150, 142, 185, 120, 171, 184, 149, 24, 59, 68]

print(max(student_scores))

[실습]

우리가 실습할 내용은 이러하다.

 

지금까지 배운 내용인 for문, 리스트, 조건문을 사용해서 max함수의 기능(최대값 찾기)을 구현해보자.

 

[답]

더보기
더보기
student_scores = [150, 142, 185, 120, 171, 184, 149, 24, 59, 68]

max_score = 0

for score in student_scores:
    if max_score < score:
        max_score = score
print(max)

이 코드는 student_scores 만큼 반복한다.

max_score은 0이다. 

for문 안에 들어가서 score과 max_score을 하나씩 비교하며,

만약 max_score이 score보다 작다면

max_score 값을 score 값으로 바꿔준다.


[for 반복문과 range() 함수]

지금까지 우리는 for문을 배웠다.

하지만 우리는 항상 리스트와 함께 for문을 사용하지는 않는다.

때로는 리스트와 완전히 독립적인 루프를 사용하고 싶을 수 있다.

 

이때 사용할 수 있는 것이 range 함수 이다.

 

range 함수는 특정 범위의 숫자를 생성해서 루프를 돌리고 싶을 때 매우 유용한 함수이다.

 

구문은 다음과 같다.

for number in range(a, b):
	print(number)

 

위에 코드처럼 for와 in이 있지만,

리스트를 반복하는 대신 범위(range)를 생성하여 루프가 어떻게 작동할지 정의한다.

 

구문의 경우 a와 b 사이의 범위를 생성한다.

그런 다음 그 범위 내의 각 숫자를 가져와서 출력을 한다.

 

range 함수는 그 자체로는 아무것도 하지 않는다는 것을 기억해야 한다.

 

print(range(1, 10))

위 코드를 입력하고 출력해보면 실제로 아무것도 하지 않는 것을 볼 수 있다.

 

range 함수는 다른 함수와 함께 사용해야 한다.

 

그리고 우리는 for 반복문과 함께 사용할 것이다.

for number in range(1, 10):
    print(number)

이렇게 하면 1부터 9까지의 숫자가 출력된다.

 

기본적으로 range 함수는 처음부터 끝까지 모든 숫자를 하나씩 증가시키며 진행한다.

다른 숫자로 증가시키고 싶다면 끝에 쉼표를 추가하고 스텝 크기를 지정하면 된다.

for number in range(1, 10, 4):
    print(number)

이렇게 하면

1

5

9

가 출력된다.


[실습 1]

우리가 위에서 배운 내용을 이용하여 가우스 챌린지(1 ~ 100까지 더하기)를 해결할 수 있는 코드를 만들어보자.

 

[답]

더보기
더보기
total = 0
for number in range(1, 101):
    total += number
print(total)

 


[실습 2]

 

Description

프로그램을 작성하여 FizzBuzz 게임의 해답을 자동으로 출력하자.

 

FizzBuzz 게임의 규칙은 다음과 같다.

1. 프로그램은 1부터 100까지의 각 숫자를 차례대로 출력해야 하며, 숫자 100을 포함해야 함.

2. 하지만 숫자가 3으로 나누어 떨어지면 숫자를 출력하는 대신 "Fizz"를 출력해야 함.

3. 숫자가 5로 나누어 떨어지면 숫자를 출력하는 대신 "Buzz"를 출력해야 함.

4. 그리고 숫자가 3과 5로 모두 나누어 떨어지면 "FizzBuzz"를 출력해야 함.

 

예시)

1

2

Fizz

4

Buzz

Fizz

7

8

Fizz

Buzz

 

[답]

더보기
더보기
for number in range(1, 101):
    if number % 3 == 0 and number % 5 == 0:
        print("FizzBuzz")
    elif number % 3 == 0:
        print("Fizz")
    elif number % 5 == 0:
        print("Buzz")
    else:
        print(number)
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.