728x90
반응형
SMALL
1. 반복문
1-1. 자료형 참/거짓 판단하기
- 파이썬에서 사용하는 모든 자료형은 참 or 거짓으로 표현 가능
bool1 = True
print(bool1)
print(type(bool1))
True
<class 'bool'>
# int
# 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
# str
str1 = "안녕"
print(str1)
print(type(str1))
print(bool(str1))
str2 = ""
print(str2)
print(type(str2))
print(bool(str2))
안녕
<class 'str'>
True
<class 'str'>
False
# list
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
list1 = [1, 3, 5]
if list1: #값이 있어 True
print('요소가 있습니다')
else:
print('요소가 없습니다')
요소가 있습니다
1-2. 대입 연산자
- =, +=, -=, *=, /=, %=
- 왼쪽의 저장된 값과 오른쪽의 값을 연산한 뒤 다시 왼쪽에 대입 (inplace 연산)
num = 10
num += 1 # num = num + 1 과 같음
print(num)
11
num = 10
num -= 1 # num = num - 1
print(num)
9
num = 10
num *= 10
print(num)
100
num = 10
num /= 10
print(num)
1.0
num = 10
num %= 2
print(num)
0
1-3. while 문
while 조건식:
조건식의 결과가 True인 동안 반복할 문장
...
# 무한루프
while true:
print('끝나지 않는 반복')
i = 1
while i <= 5:
print('Hello python')
i += 1
print('현재 i의 값은:', i)
print('루프가 %d번 반복하였습니다' % (i-1))
Hello python
Hello python
Hello python
Hello python
Hello python
현재 i의 값은: 6
루프가 5번 반복하였습니다
print(f'현재 i의 값:{i}')
현재 i의 값:6
# 1 ~ 10까지의 총합
# 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
'''
sum = 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55 -> print
i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
'''
i = 1
sum = 0
while i <= 10:
sum += i
i += 1
print(f'1부터 10까지의 합: {sum}')
1부터 10까지의 합: 55
문제 1
- 1 ~ 100짝수의 총합을 구하는 프로그램을 작성해보자
i = 0
sum = 0
while i <= 100:
if i % 2 == 0:
sum += i
i += 2
# else:
# i += 1
print(f'1~100까지의 짝수의 합: {sum}')
1~100까지의 짝수의 합: 2550
# 선생님 답안
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(f'1부터 10까지의 합: {sum}')
1부터 10까지의 합: 2550
문제 2
- 원하는 단을 입력받아 해당 단의 구구단을 출력하는 프로그램을 작성해보자
# 원하는 단을 입력하세요: 7
# 7단
# 7 * 1 = 7
# 7 * 2 = 14
# ...
# 7 * 9 = 63
dan = int(input('원하는 단을 입력하세요: '))
print('%d단' % dan)
i = 1
while i <= 9:
print('%d * %d = %d' % (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
# 선생님 답안
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
1-4. for in 문
for 변수 in iterable 객체:
이터러블 객체의 요소 갯수만큼 반복할 문장
...
- ★★★ iterable 객체: 순서가 있고 요소가 있는객체
list1 = [10, 20, 30, 40]
for li in list1:
print(li)
10
20
30
40
# isintance(이터러블한 객체인지 확인하고자 하는객체, collections.Iterable)
import collections
isinstance(list1, collections.Iterable)
True
# range(): 범위를 생성해주는 함수
# range(시작인덱스, 종료인덱스(여기 직전까지임), 증가값)
num = range(0, 10, 1)
print(num)
range(0, 10)
for i in num:
print(i, end=" ")
0 1 2 3 4 5 6 7 8 9
# import collections 해줘야 함
isinstance(num, collections.Iterable)
True
num = 10
# print(num)
for i in num:
print(i, end=' ')
# TypeError: 'int' object is not iterable
isinstance(num, collections.Iterable)
False
# 증가값을 생략하면 기본값은 1
for i in range(0, 10):
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
# 시작값을 생략하면 기본값은 0
for i in range(10):
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
# 시작값은 1, 종료값은 10, 증가값은 2
for i in range(1, 10, 2):
print(i, end=' ')
1 3 5 7 9
문제
- for in 문을 이용하여 1 ~ 100까지 짝수의 총합을 구하는 프로그램을 작성하기
sum = 0
for i in range(0, 101, 2):
sum += i
print(sum)
2550
# 선생님 답안
sum = 0
for i in range(0, 101, 2):
sum += i
print(f'1부터 100까지 짝수의 총합: {sum}')
1부터 100까지 짝수의 총합: 2550
1-5. enumerate
- 반복문 사용시 몇번째 반복인지 인덱스 번호로 확인
- 인덱스 번호와 요소를 튜플 형태로 반환
(0, 10)
(1, 20)
(2, 30)
(3, 40)
(4, 50)
index:0, value:10
index:1, value:20
index:2, value:30
index:3, value:40
index:4, value:50
1-6. zip() 함수
- 객체가 담고 있는 원소를 엮어서 튜플의 형태로 반환
- 매개변수의 길이가 다를 때는 짧은 매개변수 기준으로 데이터가 엮이고, 나머지는 버려짐
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]))
# li1, li2의 요소 갯수가 같기때문에 괜찮지만
# 다를경우도 있기 때문에 좋은 코드는 아니다.
(10, 'apple')
(20, 'banana')
(30, 'orange')
for l1, l2 in zip(li1, li2):
print((l1, l2))
# 위의 코드의 더 좋은 버전
# for 변수1, 변수2 zip(이터러블객체1, iterable2):
(10, 'apple')
(20, 'banana')
(30, 'orange')
# 튜플의 형태로 반환한다.
for li in zip(li1, li2):
print(li)
(10, 'apple')
(20, 'banana')
(30, 'orange')
# 3개도 튜플로 묶기 가능
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 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문과 함께 사용하기
# 리스트에서 for문 사용하기
li1 = ['apple', 'banana', 'orange', 'melon']
for i in li1:
print(i, end=' ')
apple banana orange melon
# 튜플에서 for문 사용하기
li1 = ('apple', 'banana', 'orange', 'melon')
for i in li1:
print(i, end=' ')
apple banana orange melon
문제 1
아래 score 리스트에 저장된 점수가 60점 이상인 학생이 몇명인지 알아보는 프로그램을 작성해보자
- score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
num = 0
for i in score:
if i >= 60:
num += 1
print(f"60 점 이상인 학생은{num}명 입니다.")
60 점 이상인 학생은5명 입니다.
# 선생님 답안
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개 이상 겹쳐져 있는 형태
for i in range(1, 4):
print(f'😎i: {i}')
for j in range(1, 4):
print(f'{" " * 4}😍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
# '😈'를 이용하여 아래와 같은 도형을 만들어 보자. (다중반복문으로!!!)
'''
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
'''
for i in range(5):
for j in range(5):
print('😈', end=" ") # 25번 옆으로찍힌다.
print() # print가 엔터키 역할
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
😈 😈 😈 😈 😈
문제 1
'😈'를 이용하여 아래와 같은 도형을 만들어 보자. (다중반복문으로!!!)
😈 😈 😈 😈 😈
😈 😈 😈 😈
😈 😈 😈
😈 😈
😈
for i in range(5):
for j in range(i, 5):
print('😈', end=" ")
print()
😈 😈 😈 😈 😈
😈 😈 😈 😈
😈 😈 😈
😈 😈
😈
# 선생님 답안
for i in range(5):
for j in range(i, 5):
print('😈', end=" ")
print()
😈 😈 😈 😈 😈
😈 😈 😈 😈
😈 😈 😈
😈 😈
😈
문제 2
'😈'를 이용하여 아래와 같은 도형을 만들어 보자. (다중반복문으로!!!)
😈
😈 😈
😈 😈 😈
😈 😈 😈 😈
😈 😈 😈 😈 😈
# for i in range(5):
for j in range(5):
j += 1
print()
print(f"{'😈' * (j)}", end=" ")
😈
😈😈
😈😈😈
😈😈😈😈
😈😈😈😈😈
# 선생님 답안
for i in range(5):
for j in range(0, i + 1):
print('😈', end=" ")
print()
😈
😈 😈
😈 😈 😈
😈 😈 😈 😈
😈 😈 😈 😈 😈
# 2단부터 9단까지 구구단을 출력하는 프로그램을 작성
# 2단
# 2 * 1 = 2
# 2 * 2 = 4
# ...
# 9단
# 9 * 1 = 9
# ...
# 9 * 9 = 81
for i in range(2,10):#단
print(f'{i}단')
# 2 * 1 = 2
# 2 * 2 = 4
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
4단
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
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
6단
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
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
8단
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
9단
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
문제
- 2단부터 9단까지 구구단을 출력하는 구구단을 while문으로 작성해보자
dan = 2
while dan < 10:
num = 1 # 한바퀴 돌고나면 다시 곱해지는 숫자가 1이 되어야 곱셈을 연산하기때문에
# while문 안에서 변수를 계속 갱신할수 있게 지정해준다
print(f'{dan}단')
while num < 10:
print(f'{dan} * {num} = {dan * num}')
num += 1 #곱하기 한번하면 곱할숫자를 하나씩 늘려준다.
dan += 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
4단
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
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
6단
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
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
8단
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
9단
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
# 선생님 답안
# 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()
문제
- 아래 score 리스트의 요소를 모두 출력하는 프로그램을 작성해보자
- score = [[80, 90, 50], [40, 70, 30], [90, 50, 100]]
score = [[80, 90, 50], [40, 70, 30], [90, 50, 100]]
for i in range(0, 3):
for j in range(0, 3):
print(score[i][j], end=" ")
80 90 50 40 70 30 90 50 100
score = [[80, 90, 50], [40, 70, 30], [90, 50, 100]]
i = 0
j = 0
while i < 3:
while j < 3:
print(score[i][j], end=" ")
j += 1 # j 인덱스 증가
i += 1 # i 인덱스 증가
j = 0 # j 초기화
80 90 50 40 70 30 90 50 100
# 선생님 답안
# for i in range(3): ### 상수를 고정해서 사용하면 데이터가 바뀌게 되었을때
# for j in range(3):### 코드를 변경하여야 하기때문에 아래 방법
# print(score[i][j], end=" ")### 객체를 지정해버리는 것 이 더 좋다
### 파이썬에서만 사용가능한 방법임(아래)
for i in score:
for j in i:
print(j, end=" ")
80 90 50 40 70 30 90 50 100
3. 컴프리헨션(Comprehension)
- 이러블한 오브젝트를 생성하기 위한 방법 중 하나로 파이썬에서 사용할수 있는 유용한 기능
n = range(0, 10, 1)
print(n)
range(0, 10)
[ ]n = 10 result = [0 for i in range(n)] # 0 ~ 9 까지 반복하면서 각각에 0을 대입하고 리스트형태로 만들어 # result 라는 변수에 대입해라 print(result)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [n*n for n in arr]
# arr의 갯수만큼 반복하면서 요소를 n에 대입
# 그후 n*n 값을 뽑아서 리스트 형태로 출력하란 뜻
print(result)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
arr = ['apple', 'banana', 'orange', 'melon']
result = [len(string) for string in arr]
# arr의 갯수만큼 반복하면서 요소를 string에다 대입,
# 그후 string의 요소의 길이를 result에 대입하여 리스트로 출력
print(result)
[5, 6, 6, 5]
# if 문도 사용 가능
result = [n for n in range(10) if n % 2 == 0]
print(result)
[0, 2, 4, 6, 8]
# 0 ~ 100의 숫자 중 3의 배수이며, 홀수인 숫자만 리스트에 저장하기
result = [n for n in range(101) if n % 3 == 0 if n % 2 != 0]
print(result)
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]
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
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]
[1, 2, 2, 4, 3, 6]
[1, 2, 2, 4, 3, 6]
[[0, 0], [0, 0], [0, 0]]
728x90
반응형
LIST
'파이썬' 카테고리의 다른 글
| 세트(set) (0) | 2023.03.08 |
|---|---|
| 자료구조- 딕셔너리(dictionary) (0) | 2023.03.08 |
| 제어문- 조건문(if 함수) (0) | 2023.03.07 |
| 튜플(Tuple) (0) | 2023.03.07 |
| 자료구조- list (0) | 2023.03.06 |