본문 바로가기

코딩/파이썬

제어문 - 반복문

반복문

반복문은 동일한 작업을 여러 번 실행하기 위해 사용되는 제어 구조인데,

주로 for문과 while문이 이에 해당된다.

 

while문

특정 조건이 참인 동안 반복적으로 코드 블록을 실행하는데,

조건이 거짓이 되면 반복을 멈추는 특징이 있다.

 

while 조건:

   조건이 참인 동안 실행될 코드

 

# 1부터 10까지의 총합
i = 1
sum = 0

while i <= 10:
  # 0 += 1 => sum = 1
  # 1 += 2 => sum = 3
  # 3 += 3 => sum = 6
  # 6 += 4 => sum = 10
  # 10 += 5 => sum = 15
  # 15 += 6 => sum = 21
  # 21 += 7 => sum = 28
  # 28 += 8 => sum = 36
  # 36 += 9 => sum = 45
  # 45 += 10 => sum = 55
	sum += i
    i += 1
    
   print(f'1부터 10까지의 합: {sum}')

 

문제!

1부터 100까지의 짝수의 합을 구하는 프로그램을 작성해보자.

i = 1
sum = 0

while i <= 100:
	if i % 2 == 0 :
    	sum += i
      i += 1  # 들여쓰기 조심!!
    print(f'1부터 100까지의 짝수의 합: {sum}')
# 원하는 단을 입력받아 해당 단의 구구단을 출력
dan = int(input('원하는 단을 입력하세요'))
print(f'{dan}단')
'''
5단
5 * 1
'''
i = 1
while i <= 9:
	print(f'{dan} * {i} = {dan * i}')
    i += 1

 

for문

시퀀스(리스트, 튜플,문자열 등)의 각 항목에 대해 반복 작업을 수행하는 반복문이다!

for문은 주로 "지정된 범위 내에서 반복"할 때 사용이 되므로,

반복할 요소들이 미리 정해져 있는게 유용하다~

 

형식은

 

for 요소 in 시퀀스:

      # 시퀀스 요소 갯수만큼 반복할 문장

이고,

 

range()함수

또한 사용할 수 있는데,

range()함수순차적인 정수의 시퀀스를 생성하는데 사용되는 내장함수이다.

range()함수의 결과로 생성되는 시퀀스실제로 메모리에 저장되지 x,

필요 할때 마다 생성되므로, 큰 범위의 반복문에도 사용 가능하다.

 

range(시작값, 종료값, 단계)

 

로 쓰이니 참고해주시길!

여기서 단계와 시작값은 생략 가능한데,

각각 기본값은 1, 0이다.

 

# for, range()를 이용하여 1부터 100까지 홀수의 합 구하기
sum = 0

for i in range(1, 101, 2):
	sum += i
print(f'1부터 100까지의 홀수의 합: {sum}')

 

1부터 100까지의 홀수의 합 : 2500

 

enumerate()함수

이 함수는 특이하긴 한데,

반복문 사용시 인덱스와 값을 함께 가져오기  위해 사용된다는 특징이 있다.

for문과 함께 사용되어,

반복문 내에 순서를 추적하며 값과 해당 값의 인덱스를 함께 사용할 때 유용하다~!

enumerate() 함수(인덱스, 값)의 튜플을 반환하는 이터레이터를 생성한다!

 

enumerate(iterable, 시작값)

 

이렇게 쓰이고,

list1 = [10, 20, 30, 40, 50]

for e in enumerate(list1, 0):
	print(e)

 

 (0, 10)

 (1, 20)

 (2, 30)

 (3, 40)

 (4, 50)

 

이렇게 인덱스와 값이 튜플 형태로 나오는것을 확인 할 수 있다!

list2 = [10, 20, 30, 40, 50]

# (0, 10)
# i, v = (0, 10)
for i, v in enumerate(list2):
	print(f'인덱스:{i}, 값:{v}')

 

 인덱스:0, 값 :10

 인덱스:1, 값: 20

 인덱스:2, 값: 30

 인덱스:3, 값: 40

 인덱스:4, 값: 50

zip() 함수

zip() 함수파이썬에서 여러 개의 반복 가능한(iterable) 객체를 병렬적으로 묶어주는 내장함수,

각 객체로부터 순서대로 하나의 요소씩 가져와 튜플로 묶어주는 이터레이터를 반환한다

주로 여러개의 리스트나 튜플을 병렬적으로 처리하고자 할 때 사용된다.

 

zip(iterable1, iterable2)

 

list3 = [10, 20, 30]
list4 = ['apple'.'banana'.'orange']

for i in range(0, 3)
	print(list3[i], list4[i])

 

 10 apple

 20 banana

 30 orange

 

>> 확장성이 없는 코드, 나중에 리스트 변경 시 for문의 코드 또한 바꿔야하는 단점이 있다

list5= [10, 20, 30]
list6= ['apple', 'banana', 'orange']

for i in range(len(list5))
	print(list5[i], list6[i])

 

 10 apple

 20 banana

 30 orange

 

>> list5에 종속적이라 list5가 늘어나면 에러난다, list6은 무시되기에

list7 = [10, 20, 30, 40]
list8 = ['apple', 'banana', 'orange']

for i1, i2 in zip(list7, list8):
	print(i1, i2)

 

 10 apple

 20 banana

 30 orange

 

>> zip()함수를 쓰면 list7, list8이 서로 갯수가 같지 않아도 적은 숫자 횟수로 반복된다. 여기선 3번만 반복

 

list9 = [10, 20, 30]
list10 = ['apple', 'banana', 'orange']

for i1 in zip(list9, list10): # 하나로 합치면 튜플이 됨
	print(i1)

 

(10, 'apple')

(20, 'banana')

(30, 'orange')

for n, A, a in zip('12345', 'ABCDE', 'abcde')
	print(n, A, a)

 

1 A a

2 B b

3 C c

4 D d

5 E e

 

중첩반복문

하나의 반복문 안에 다른 반복문이 포함된 구조이니,

다차원 데이터나 복잡한 작업을 수행할 수 있다!!

 

for 외부변수 in 외부시퀀스 :

     for 내부변수 in 내부시퀀스:

           내부 반복문 코드

      외부 반복문

 

문제1

'🐇'를 이용하여 아래와 같은 모형을 만들어보자

🐇 🐇 🐇 🐇 🐇

🐇 🐇 🐇 🐇 🐇

🐇 🐇 🐇 🐇 🐇

🐇 🐇 🐇 🐇 🐇

🐇 🐇 🐇 🐇 🐇

for i in range(5):
	for j in range(5):
     print('🐇', end=' ')
    print()

 

문제2

'🐇 '를 이용하여 아래와 같은 모형을 만들어보자

🐇 🐇 🐇 🐇 🐇

🐇 🐇 🐇 🐇

🐇 🐇 🐇

🐇 🐇

🐇

for i in range(5):
	for j in range(i, 5):
    	print ('🐇', end=' ')
    print()

 

문제3

'🐇 '를 이용하여 아래와 같은 모형을 만들어보자

🐇

🐇 🐇

🐇 🐇 🐇

🐇 🐇 🐇 🐇

🐇 🐇 🐇 🐇 🐇

for i in range(5):
	for i in range(0, i+1):
    	print('🐇', end=' ')
    print()

 

문제4

2단부터 9단까지 구구단을 출력하는 프로그램을 만들어보자

 - 단, for문과 while문을 사용하여 각각 별도로 작성

# for문
for i in range(2, 10):
	print(f'{i}단')
    for j in range(1, 10):
    	print(f'{i} * {j} = {i*j}')
    print()
# while 문
i = 2
j = 1

while i <= 9:
	print(f'{i}단')
   	while j <= 9:
    	print(f'{i} * {j} = {i*j}')
        j += 1
    i += 1
    j = 1
    print()

'코딩 > 파이썬' 카테고리의 다른 글

사용자 정의 함수  (0) 2024.03.18
컬렉션과 반복문  (0) 2024.03.15
제어문 - 조건문  (0) 2024.03.14
파이썬 연산자  (0) 2024.03.14
컬렉션 타입 - 딕셔너리  (4) 2024.03.14