일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- CSS
- randrange()
- glob
- mro()
- shuffle()
- shutil
- remove()
- __annotations__
- fnmatch
- __len__
- zipfile
- View
- node.js
- discard()
- decode()
- choice()
- Database
- JS
- HTML
- MySQL
- count()
- __sub__
- inplace()
- 파이썬
- items()
- __getitem__
- locals()
- 오버라이딩
- fileinput
- MySqlDB
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(파이썬) 반복문 본문
1. 반복문
1-1. 자료형 참/거짓 판단하기
- 파이썬에서 사용하는 모든 자료형은 참 또는 거짓으로 표현이 가능
In [1]:
bool1 = True
print(bool1)
print(type(bool1))
True
<class 'bool'>
In [6]:
# 0 이 아닌 숫자는 모두 True, 0은 False
num1 = 10
print(num1)
print(type(num1))
print(bool(num1))
num2 = 0
print(num2)
print(type(num2))
print(bool(num2))
10
<class 'int'>
True
0
<class 'int'>
False
In [10]:
str1 = '안녕'
print(str1)
print(type(str1))
print(bool(str1))
str2 = ''
print(str2)
print(type(str2))
print(bool(str2))
안녕
<class 'str'>
True
<class 'str'>
False
In [9]:
list1 = [1, 2, 3]
print(list1)
print(type(list1))
print(bool(list1))
list2 = []
print(list2)
print(type(list2))
print(bool(list2))
[1, 2, 3]
<class 'list'>
True
[]
<class 'list'>
False
In [11]:
list1 = [1, 3, 5]
if list1:
print('요소가 있습니다')
else:
print('요소가 없습니다')
요소가 있습니다
1-2. 대입 연산자
- =, +=, -=, *=, /=, %=
- 왼쪽에 저장된 값과 오른쪽 값을 연산한 뒤 다시 왼쪽에 대입(inplace 연산)
In [12]:
num = 10
In [17]:
num += 1 # num = num + 1
print(num)
11
In [18]:
num -= 1
print(num)
10
In [19]:
num *= 10
print(num)
100
In [20]:
num /= 10
print(num)
10.0
In [21]:
num %= 2
print(num)
0.0
1-3. while 문
while 조건식:
조건식의 겨로가가 True인 동안 반복할 문장
...
In [24]:
# 무한 루프
while True:
print('끝나지 않는 반복')
In [28]:
i = 1
while i <= 5:
print('Hello Python')
i += 1
print(f'현재 i의 값은: {i}')
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
현재 i의 값은: 6
In [33]:
# 1 ~ 10까지의 총합
# 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
i = 1
sum = 0
while i <= 10:
sum += i
i += 1
print(f'1부터 10까지의 합: {sum}')
1부터 10까지의 합: 55
문제
- 1 ~ 100까지 짝수의 총합을 구하는 프로그램을 작성해보자
나의 풀이 및 강사님 풀이
In [36]:
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(f'1부터 100까지 짝수의 합: {sum}')
1부터 100까지 짝수의 합: 2550
문제
- 원하는 단을 입력받아 해당 단의 구구단을 출력하는 프로그램을 작성해보자
나의 풀이
In [39]:
i = int(input('원하는 단을 입력하세요: '))
j = 1
print(f'{i}단')
while j <= 9:
print(f'{i} * {j} = {i * j}')
j += 1
원하는 단을 입력하세요: 7
7단
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
강사님 풀이
In [40]:
dan = int(input('원하는 단을 입력하세요: '))
print(f'{dan} 단')
i=1
while i <= 9:
print(f'{dan} * {i} = {dan * i}')
i += 1
원하는 단을 입력하세요: 7
7 단
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
1-4. for in 문
for 변수 in iterable 객체:
이터러블 객체의 요소 갯수만큼 반복할 문장
...
In [41]:
list1 = [10, 20, 30, 40]
for li in list1:
print(li)
10
20
30
40
In [44]:
import collections
# instance(이터러블한 객체인지 확인하고자 하는 객체, collections.Iterable)
isinstance(list1, collections.Iterable)
True
Out[44]:
True
In [45]:
# range(): 범위를 생성해주는 함수
# range(시작인덱스, 종료인덱스, 증가값)
num = range(0, 10, 1)
print(num)
range(0, 10)
In [47]:
for i in num:
print(i, end = ' ')
0 1 2 3 4 5 6 7 8 9
In [48]:
isinstance(num, collections.Iterable)
Out[48]:
True
In [49]:
num = 10
# print(num)
for i in num:
print(i, end = ' ')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-49-35697e8a110d> in <module>
2 # print(num)
3
----> 4 for i in num:
5 print(i, end = ' ')
TypeError: 'int' object is not iterable
In [50]:
isinstance(num, collections.Iterable)
Out[50]:
False
In [51]:
for i in range(0, 10, 1):
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
In [52]:
# 증가값을 생략하면 기본값은 1
for i in range(0, 10):
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
In [53]:
# 시작값을 생략하면 기본값은 0
for i in range(10):
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
In [55]:
# 시작값은 1, 종료값으 10, 증가값은 2
for i in range(1, 10, 2):
print(i, end=' ')
1 3 5 7 9
문제
for in 문을 이용하여 1 ~ 100까지 짝수의 총합을 구하는 프로그램을 작성해보자
나의 풀이
In [57]:
sum = 0
for i in range(1, 101, 1):
if i % 2 == 0:
sum += i
print(f'1 부터 100까지의 짝수 총합: {sum}')
1 부터 100까지의 짝수 총합: 2550
강사님 풀이
In [59]:
sum = 0
for i in range(0, 101, 2):
sum += i
print(f'1부터 100까지 짝수의 총합: {sum}')
1부터 100까지 짝수의 총합: 2550
1-5. enumerate
- 반복문 사용 시 몇번째 반복인지 인덱스 번호로 확인
- 인덱스 번호와 요소를 튜플 형태로 반환
In [60]:
li1 = [10, 20, 30, 40, 50]
for e in enumerate(li1):
print(e)
(0, 10)
(1, 20)
(2, 30)
(3, 40)
(4, 50)
In [61]:
for i, v in enumerate(li1):
print(f'index:{i}, value:{v}')
index:0, value:10
index:1, value:20
index:2, value:30
index:3, value:40
index:4, value:50
1-6. zip() 함수
- 객체가 담고있는 원소를 엮어서 튜플의 형태로 반환
- 매개변수의 길이가 다를 때는 짧은 매개변수 기준으로 데이터가 엮이고, 나머지는 버려짐
In [74]:
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']
# (10, 'apple')
# (20, 'banana')
# (30, 'orange')
for i in range(len(li1)):
print((li1[i], li2[i]))
(10, 'apple')
(20, 'banana')
(30, 'orange')
li1 하나에 너무 의존적이므로 옳바르지 않다.
In [75]:
for l1, l2 in zip(li1, li2):
print((l1, l2))
(10, 'apple')
(20, 'banana')
(30, 'orange')
In [80]:
for li in zip(li1, li2):
print(li)
(10, 'apple')
(20, 'banana')
(30, 'orange')
In [76]:
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')
In [77]:
for n, A, a in zip('12345', 'ABCDEF', 'abcdef'):
print((n, A, a))
('1', 'A', 'a')
('2', 'B', 'b')
('3', 'C', 'c')
('4', 'D', 'd')
('5', 'E', 'e')
1-7. list와 tuple을 for문과 함께 사용하기
In [62]:
li1 = ['apple', 'banana', 'orange', 'melon']
for i in li1:
print(i, end=' ')
apple banana orange melon
In [63]:
tu1 = ('apple', 'banana', 'orange', 'melon')
for i in tu1:
print(i, end=' ')
apple banana orange melon
문제
아래 score 리스트에 저장된 점수가 60점 이상인 학생이 몇명인지 알아보는 프로그램을 작성해보자
- score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
나의 풀이
In [64]:
score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
sum = 0
for i in score:
if i >= 60:
sum += 1
print('60점 이상인 학생의 수: ', sum)
60점 이상인 학생의 수: 5
강사님 풀이
In [65]:
score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
count = 0
for i in score:
if i >= 60:
count += 1
print(f'60점 이상인 학생의 수는 {count}명입니다')
60점 이상인 학생의 수는 5명입니다
2. 다중반복문
- 반복문이 2개이상 겹쳐져 있는 형태
In [66]:
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
In [67]:
# '🎃'를 이용하여 아래와 같은 도형을 만들어보자.
'''
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
'''
for i in range(5):
for j in range(5):
print('🎃', end=' ')
print()
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
문제1
'🎃'를 이용하여 아래와 같은 도형을 만들어보자.
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃
🎃 🎃
🎃
나의 풀이
In [68]:
for i in range(5):
for j in range(5-i):
print('🎃', end=' ')
print()
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃
🎃 🎃
🎃
강사님 풀이
In [70]:
for i in range(5):
for j in range(i, 5):
print('🎃', end=' ')
print()
🎃 🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃
🎃 🎃
🎃
문제2
'🎃'를 이용하여 아래와 같은 도형을 만들어보자.
🎃
🎃 🎃
🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
나의 풀이 및 강사님 풀이
In [69]:
for i in range(5):
for j in range(i+1):
print('🎃', end=' ')
print()
🎃
🎃 🎃
🎃 🎃 🎃
🎃 🎃 🎃 🎃
🎃 🎃 🎃 🎃 🎃
In [71]:
# 2단부터 9단까지 구구단을 출력하는 프로그램을 작성
for i in range(2, 10):
print(f'{i} 단')
for j in range(1, 10):
print(f'{i} * {j} = {i*j}')
print()
2 단
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 단
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
# 9단까지 나오지만 생략
문제
- 2단부터 9단까지 구구단을 출력하는 프로그램을 while으로 작성해보자
나의 풀이 및 강사님 풀이
In [72]:
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()
2 단
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 단
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
# 9단까지 나오지만 생략
문제
- 아래 score 리스트의 요소를 모두 출력하는 프로그램을 작성해보자
- score = [[80, 90, 50], [40, 70, 30], [90, 50, 100]]
나의 풀이 및 강사님 풀이
In [73]:
score = [[80, 90, 50], [40, 70, 30], [90, 50, 100]]
for i in score:
for j in i:
print(j, end=' ')
80 90 50 40 70 30 90 50 100
3. 컴프리헨션(Comprehension)
- 이터러블한 오브젝트를 생성하기 위한 방법 중 하나로 파이썬에서 사용할 수 있는 유용한 기능
In [81]:
n = range(0, 10, 1)
print(n)
range(0, 10)
In [82]:
n = 10
result = [0 for i in range(n)]
print(result)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
In [83]:
result = [i for i in range(n)]
print(result)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [84]:
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [n for n in arr]
print(result)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [85]:
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [n*n for n in arr]
print(result)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
In [86]:
arr = ['apple', 'banana', 'orange', 'melon']
result = [len(string) for string in arr]
print(result)
[5, 6, 6, 5]
In [88]:
result = [n for n in range(10) if n % 2 == 0]
print(result)
[0, 2, 4, 6, 8]
In [89]:
# 0 ~ 100까지의 숫자 중 3의 배수이며, 홀수인 숫자만 리스트에 저장하기
result = [n for n in range(101) if n % 3 == 0 if n % 2 != 0]
print(result)
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
In [90]:
result = [n for n in range(101) if n % 3 == 0 and n % 2 != 0]
print(result)
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
In [91]:
arr = [-1, 0, -4, 24, 5, -10, 2]
# 양수는 리스트에 그대로 저장하고, 음수는 0으로 변환해서 저장하기
result = [n if n>0 else 0 for n in arr]
print(result)
[0, 0, 0, 24, 5, 0, 2]
In [93]:
arr = []
for i in range(1, 4):
for j in range(1, 3):
arr.append(i * j)
print(arr)
[1, 2, 2, 4, 3, 6]
In [94]:
arr = [i*j for i in range(1,4) for j in range(1, 3)]
print(arr)
[1, 2, 2, 4, 3, 6]
In [95]:
result = [[0 for i in range(2)] for j in range(3)]
print(result)
[[0, 0], [0, 0], [0, 0]]
'파이썬 기초' 카테고리의 다른 글
(파이썬) 세트 (0) | 2023.03.08 |
---|---|
(파이썬) 딕셔너리 (0) | 2023.03.08 |
(파이썬) 조건문 및 연산자 (0) | 2023.03.07 |
(파이썬) 튜플 (0) | 2023.03.07 |
(파이썬) 리스트 (0) | 2023.03.06 |