1. 반복문
반복문은 동일한 작업을 여러 번 실행하기 위해 사용되는 제어 구조입니다. 주로 for 문과 while 문이 사용되며, 각각의 반복문은 다른 상황에 적합한 방식으로 사용됩니다.
2. while 문
while 문은 특정 조건이 참인 동안 반복적으로 코드 블록을 실행하는 제어 구조입니다. while 문은 주어진 조건이 참인 동안 반복하며, 거짓이 되면 멈춥니다.
- 멈출수 있는 조건을 넣지않으면 무한히 반복되는 무한루프상태가 될수있습니다.
wihle 조건:
조건이 참인 동안 실행될 코드
i = 1
while i <= 5:
print('Hello Pthon')
i += 1
결과:
Hello Pthon
Hello Pthon
Hello Pthon
Hello Pthon
Hello Pthon
# 1부터 10까지의 총합
i = 1
sum = 0
while i <= 10:
sum += i
i += 1
print(f'1부터 10까지의 합: {sum}')
결과:
1부터 10까지의 합: 55
# 1부터 100까지의 짝수의 합을 구하는 프로그램을 작성
i = 1
sum = 0
while i <= 100:
if i%2 == 0:
sum += i
i += 1
print(f'1부터 100까지 짝수의 합: {sum}')
결과:
1부터 100까지 짝수의 합: 2550
# 원하는 숫자를 입력받아 해당 숫자의 구구단 출력
dan = int(input('원하는 단을 입력하세요 :'))
print(f'{dan}단')
i = 1
while i <= 9:
print(f'{dan} * {i} = {dan * i}')
i += 1
결과:
원하는 단을 입력하세요: 5
5단
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
while 문은 반복횟수를 모를때 유용하고, for문은 반복횟수가 정해져 있을때 유용하다.
3. for 문
for 문은 시퀀스(리스트, 튜플, 문자열 등)의 각 항목에 대해 반복 작업을 수행하는 반복문입니다. for 문은 주로 "지정된 범위 내에서 반복"할 때 사용됩니다. 이것은 반복할 요소들이 미리 정해져 있는 경우에 유용합니다.
for 요소 in 시퀀스:
# 시퀀스 요소 갯수만큼 반복할 문장
list1 = [10, 20, 30, 40]
for li in list1:
print(li)
결과:
10
20
30
40
3-1. range() 함수
range() 함수는 파이썬에서 순차적인 정수의 시퀀스를 생성하는 데 사용되는 내장 함수입니다. 주로 for 문과 함께 사용되며, 일정한 범위 내에서 반복 작업을 수행할 때 유용하게 활용됩니다. range() 함수의 결과로 생성되는 순차적인 정수 시퀀스는 실제로 메모리에 저장되지 않고 필요할 때마다 생성되므로, 큰 범위의 반복문에도 효율적으로 사용할 수 있습니다.
range(start,stop,step)
num = range(1, 11, 1)
print(num)
for i in num:
print(i, end=' ')
결과:
range(1, 11)
1 2 3 4 5 6 7 8 9 10
for i in range(1, 11, 1):
print(i, end= ' ')
결과:
1 2 3 4 5 6 7 8 9 10
for i in range(1, 11, 1):
print(i, end= ' ')
결과:
1 2 3 4 5 6 7 8 9 10
이런식으로 코드 간소화 할수있다.
for i in range(1, 11):
print(i, end = ' ')
step은 생략할수 있고 기본값은 1이다.
for i in range(11):
print(i, end = ' ')
시작값을 생략할 수 있고 기본값은 0이다.
for i in range(1, 101, 2):
print(i, end = ' ')
결과:
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
# for, range()를 이용하여 1부터 100까지 홀수의 합 구하기
sum = 0
for i in range(1, 101, 2):
sum += i
print(f'1부터 100 까지 홀수의 합: {sum}')
결과:
1부터 100 까지 홀수의 합: 2500
3-2. enumerate() 함수
enumerate() 함수는 파이썬에서 반복문을 사용할 때 인덱스와 값을 함께 가져오기 위해 사용되는 내장 함수입니다. 주로 for 문과 함께 사용되며, 반복문 내에서 순서를 추적하면서 값과 해당 값의 인덱스를 함께 사용할 때 유용합니다. enumerate() 함수는 (인덱스, 값)의 튜플을 반환하는 이터레이터(iterator)를 생성합니다.
enumerate(iterable, 시작값)#시작값은 인덱스값을 설정
li1 = [10, 20, 30, 40, 50]
for e in enumerate(li1, 0):
print(e)
결과:
(0, 10)
(1, 20)
(2, 30)
(3, 40)
(4, 50)
**시작값은 생략이 가능하고 기본값은 0이다.
li1 = [10, 20, 30, 40, 50]
for e in enumerate(li1, 1):
print(e)
결과:
(1, 10)
(2, 20)
(3, 30)
(4, 40)
(5, 50)
li1 = [10, 20, 30, 40, 50]
# (0, 10)
# i, v = (0, 10)
for i, v in enumerate(li1):
print(f'인덱스: {i}, 값: {v}')
결과:
인덱스: 0, 값: 10
인덱스: 1, 값: 20
인덱스: 2, 값: 30
인덱스: 3, 값: 40
인덱스: 4, 값: 50
튜플 형식이기 때문에 인덱스와 값을 쪼개서 저장이 가능하다.
3-3. zip()함수
zip() 함수는 파이썬에서 여러 개의 반복 가능한(iterable) 객체를 병렬적으로 묶어주는 내장 함수입니다. 각 객체로부터 순서대로 하나의 요소씩 가져와 튜플로 묶어주는 이터레이터를 반환합니다. 주로 여러 개의 리스트나 튜플을 병렬적으로 처리하고자 할 때 사용됩니다.
zip(interable1, iterable2, ...)
# li1 = [10, 20, 30, 40]
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
for i in range(0, 3):
print(li1[i], li2[i])
결과:
10 apple
20 banana
30 orange
range안에 고정된 숫자를 넣으면 나중에 변수의 값이 수정 되었을때 코드를 직접 수정을 해줘야 하기때문에 확장성이 없다.
for i in range(len(li1)):
print(li1[i], li2[i])
결과:
10 apple
20 banana
30 orange
len으로 값을 주면 요소 가 추가되었을때 자동으로 반복이 되지만 하나의 변수만 변경이 되면 인덱싱 에러가 난다.
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
for l1, l2 in zip(li1,li2):
print(l1, l2)
결과:
10 apple
20 banana
30 orange
zip으로 묶어 함께 출력이 가능하다.
li1 = [10, 20, 30, 40] # 4개
li2 = ['apple', 'banana', 'orange'] # 3개
# 3번 반복
for l1, l2 in zip(li1,li2):
print(l1, l2)
결과:
10 apple
20 banana
30 orange
zip 을 이용해 묶어주면 한개의 변수만 커졌을때 작은쪽에 맞춰서 반복이 되어서 에러가 발생하지 않는다.
li1 = [10, 20, 30, 40] # 4개
li2 = ['apple', 'banana', 'orange'] # 3개
# 3번 반복
for li in zip(li1,li2):
print(li)
결과:
(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
문자열도 순서가 있다면 zip을 사용할수있다.
4. 중첩 반복문
파이썬에서 중첩된 반복문은 하나의 반복문 안에 다른 반복문이 포함된 구조를 의미합니다. 중첩 반복문은 외부 반복문의 각 반복마다 내부 반복문이 모두 실행되는 방식으로 작동합니다. 이를 통해 다차원의 데이터를 처리하거나 복잡한 작업을 수행할 수 있습니다.
for 외부변수 in 외부시퀀스:
for 내부변수 in 내부시퀀스:
내부 반복문 코드
외부 반복문 코드
for i in range(1, 4):
print(f'😎 i: {i}')
for j in range(1,4):
print(f'😍 j:{j}')
결과:
😎 i: 1
😍 j:1
😍 j:2
😍 j:3
😎 i: 2
😍 j:1
😍 j:2
😍 j:3
😎 i: 3
😍 j:1
😍 j:2
😍 j:3
문제1
'🎃'를 이용하여 아래와 같은 모형을 만들어보자
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
for i in range(5):
print()
for j in range(5):
print('🎃 ', end='')
결과:
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
문제2
'🎃'를 이용하여 아래와 같은 모형을 만들어보자
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃
🎃 🎃
🎃
cnt = 5
for i in range(5):
for j in range(cnt):
print('🎃', end='')
cnt -= 1
print()
결과:
🎃🎃🎃🎃🎃
🎃🎃🎃🎃
🎃🎃🎃
🎃🎃
🎃
변수를 추가해 stop값에 넣고 반복이 1번 돌아갈때마다 cnt값을 1씩 빼주면 반복횟수가 1씩 줄어 모양을 만들수있다.
for i in range(5):
for j in range(i, 5):
print('🎃', end='')
print()
결과:
🎃🎃🎃🎃🎃
🎃🎃🎃🎃
🎃🎃🎃
🎃🎃
🎃
시작값에 i 를 주면 i 값이 하나씩 증가할 때 마다 시작값이 1 씩 증가해 반복횟수를 하나씩 줄일수있다.
문제3
'🎃'를 이용하여 아래와 같은 모형을 만들어보자
🎃
🎃🎃
🎃🎃🎃
🎃🎃🎃🎃
🎃🎃🎃🎃🎃
for i in range(1,6):
for j in range(i):
print('🎃', end='')
print()
결과:
🎃
🎃🎃
🎃🎃🎃
🎃🎃🎃🎃
🎃🎃🎃🎃🎃
i값이 증가할 때 마다 반복 횟수가 1씩 늘어위와 같은 모양을 만들수 있다.
문제4
2단부터 9단까지 구구단을 출력하는 프로그램을 만들어보자
- 단, for문과 while을 사용하여 각각 별도로 작성
for i in range(2,10):
for j in range(1,10):
print(f'{i} * {j} = ',i*j)
결과:
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
...
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
...
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
i = 2
while i < 10:
j = 1 # 여기서 초기화를 시켜주어야 처음으로 돌아와서 다시 계산을 하게된다.
while j <= 9:
print(f'{i} * {j} = ', i*j)
j += 1
i += 1
결과:
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
...
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
...
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
'코딩 > 파이썬' 카테고리의 다른 글
파이썬 - 사용자 정의 함수 (0) | 2024.03.15 |
---|---|
컬렉션과 반복문 (2) | 2024.03.15 |
파이썬 제어문 - 조건문 (0) | 2024.03.14 |
파이썬 - 연산자 (2) | 2024.03.14 |
파이썬 - 딕셔너리 (0) | 2024.03.14 |