You are on page 1of 24

과학도를 위한 파이썬 프로그래밍 7주차

복습!
2023년 10월 20일
연산자 (2주)

▪ 사칙연산자 + - * /

- 데이터의 타입에 따라 수행되는 연산도 변경됩니다.

- 0으로 나누기 주의

▪ 지수연산자 **

▪ 몫 연산자 // 나머지 연산자 %

▪ 우선순위: (소괄호) > ** > *, /, //, %, > +,-

▪ 복합연산자 += -= *= /= %= //=

- 연산 결과를 자기 자신에게 할당하는 연산의 축약입니다.


2
변수의 내용을 포함하는 문자열 생성 (3주)

▪ str()함수를 이용한 문자열로의 변환과 + 연산 이용합니다.

age = 12
intro = '제 나이는' + str(age) + '세 입니다.’

▪ 문자열 앞에 f를 붙이는 f-String을 이용하면 편하게 생성 가능합니다

age = 12
intro = f'제 나이는 {age} 세 입니다.’

f-String에 사용하는 변수에 문자열이 담겨있어야 하는것이 아닙니다.

▪ 여러 변수를 사용하려면 같은 방법을 여러 번 사용하면 됩니다.


3
인덱스 index (3주)

▪ 문자열에 포함된 글자 하나하나에는 번호가 부여됩니다.


0 1 2 3 4 5 6 7 8 9
H E L L O ! \n 하 하 하
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1

➢ index: 맨 왼쪽 글자에 0을 부여하고 1씩 증가하는 방식

➢ negative index: 맨 오른쪽 글자에 -1을 부여하고 1씩 감소하는 방식

➢ 두 인덱스의 작동 방식은 동일합니다.

▪ 문자열[인덱스] 의 형태로 원하는 글자를 선택할 수 있습니다.

▪ 문자열[인덱스] = 문자 의 형태로 원하는 글자를 할당할 수 없습니다.

4
슬라이싱 slicing (3주)

▪ 인덱스 두 개를 사용해서 특정 범위를 선택하는 방법입니다.


0 1 2 3 4 5 6 7 8 9
▪ 문자열[ a : b ]
H E L L O ! \n 하 하 하
➢ 인덱스 a 이상 b 미만의 영역 선택 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

➢ [ 2 : 6 ], [ -8 : 6 ], [ 2 : -4 ], [-8 : -4 ] 모두 LLO! 를 선택

▪ 문자열[ a : ]

➢ 인덱스 a 이상 부터 끝까지 영역 선택

▪ 문자열[ : b ]

➢ 처음부터 인덱스 b 미만까지의 영역 선택

▪ 범위를 벗어나는 인덱스를 사용해도 에러가 발생하지 않습니다!


5
<class ‘str’> 에서 제공하는 주요 기능 (3주)

▪ 변수 = 문자열.replace(내용1, 내용2) – 문자열에 포함된 내용1을 모두 내용2


로 변환한 새로운 문자열을 생성 후 변수에 할당합니다.

▪ 변수 = 문자열.replace(내용1, 내용2, 숫자) – 문자열에 포함된 내용1을 내용2


로 숫자 번 변환한 새로운 문자열을 생성 후 변수에 할당합니다.

▪ 변수 = 문자열.count(내용) – 문자열에 포함된 내용의 개수를 반환합니다.

▪ 변수 = 문자열.split() – 문자열에 포함된 공백을 기준으로 문자열을 분리하고


각각을 담고있는 리스트를 변수에 할당합니다.

➢ 공백 이외의 문자를 기준으로 사용하려면 소괄호 내에 전달하면 됩니다.

▪ 변수 = 문자열.join(내용) – 내용의 각 글자 사이에 문자열을 추가합니다.


6
숙제2

▪ (A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

▪ (A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

▪ 세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을


작성하시오.

▪ 입력: 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

▪ 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C,


넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

7
조건문의 형태 (4주)

명령문0 명령문0
if 조건1: if 조건1:
⎵⎵⎵⎵if 조건2:
⎵⎵⎵⎵명령문1 ⎵⎵⎵⎵⎵⎵⎵⎵명령문1
elif 조건2: ⎵⎵⎵⎵else:
⎵⎵⎵⎵명령문2 ⎵⎵⎵⎵⎵⎵⎵⎵명령문2
elif 조건3: else:
⎵⎵⎵⎵명령문3 ⎵⎵⎵⎵if 조건3:
⎵⎵⎵⎵⎵⎵⎵⎵명령문3
else: ⎵⎵⎵⎵else:
⎵⎵⎵⎵명령문4 ⎵⎵⎵⎵⎵⎵⎵⎵명령문4

8
문자열의 크기 비교 (4주)

1 0 0 9
▪ 1009 < 10000 : 참
1 0 0 0 0
▪ '1009' < '10000' : 거짓

▪ '0' < '9' < 'A' < 'Z' < 'a' < 'z' < 'ㄱ' …

▪ ord() 함수를 통해 각 글자의 정확한 순서를 확인 가능합니다.

▪ str()과 int()/float()을 적절히 활용하시면 좋습니다.

▪ 두 리스트/튜플 사이의 대소관계도 비슷한 방식으로 결정됩니다.

9
and, or, not을 이용한 더 복잡한 조건의 표현 (4주)

조건1 and 조건2


조건1 or 조건2
▪ True and True : True

▪ 나머지는 모두 False

▪ False or False : False

▪ 나머지는 모두 True

not 조건

▪ 우선순위: not > and > or 순서. 소괄호를 사용하면 조절이 가능합니다.
10
조건을 이용한 반복문 (4주)

▪ 조건에 따라 프로그램 실행의 흐름을 조절하는 기능이라는 점은 동일합니다.

▪ 조건이 참으로 판별되면 while 에 속한 코드를 실행 후 다시 조건을 판별.

명령문0

while 조건:
⎵⎵⎵⎵명령문1
⎵⎵⎵⎵명령문2
⎵⎵⎵⎵명령문3

명령문4
11
4주차 실습 3 (숙제1)

▪ 사용자로부터 정수를 입력 받아서, 1 부터 입력 받은 숫자까지의 숫자를 출력


하는데, 369게임의 규칙에 따라서 출력해야 하는 숫자에 3, 6, 9가 포함 되어
있다면 짝을 출력해주세요.

▪ 문자열.count(내용)

12
for - 컨테이너를 사용한 반복문 (5주)

for 변수 in 컨테이너:
⎵⎵⎵⎵명령문1
⎵⎵⎵⎵명령문2
▪ 컨테이너의 내용을 변수에 할당 할 때 마다 for에 속한 코드가 실행됩니다.

▪ 컨테이너: 리스트(list), 튜플(tuple), 딕셔너리(dict), 셋(set), …

▪ for에 속한 코드는 조건문에서처럼 4칸 들여쓰기로 나타냅니다.

▪ 컨테이너에 속한 원소의 개수만큼 반복을 수행하게 됩니다.

▪ 컨테이너가 비어있을 경우에는 코드가 실행되지 않습니다.

▪ 컨테이너에 속한 원소의 개수는 len() 으로 확인할 수 있습니다.


13
리스트 list (5주)

▪ 원하는 원소를 대괄호 내에 쉼표로 구분해서 생성합니다.

변수 = [원소1, 원소2, 원소3, 원소4, …]

▪ 각 원소에는 index/negative index가 부여됩니다.

리스트[index], 리스트[index1:index2], 리스트[index1:], 리스트[:index2]

▪ 리스트 내에 다른 리스트를 포함할 수 있습니다.

x = [원소1, 원소2, 원소3, [1, 2, 3]]

x[3][1]

▪ 인덱스를 이용해서 내용을 변경할 수 있습니다.

리스트[인덱스] = 내용
14
리스트 list (2) (5주)

▪ 내용을 추가하기 위해서는 리스트에 적용하는 함수를 사용합니다.

리스트.append(내용)

리스트.insert(인덱스, 내용)

▪ 리스트에서 내용을 삭제할 때에는 del 키워드를 사용합니다.

del 리스트[인덱스]

▪ 리스트+리스트 : 두 리스트의 내용을 모두 가지는 리스트를 생성합니다.

▪ 리스트 * 정수 : 리스트의 내용을 정수 번 반복하는 리스트를 생성합니다.

▪ 리스트.sort() : 리스트의 내용을 오름차순(<)으로 정렬

▪ 리스트.sort(reverse = True) : 리스트의 내용을 내림차순으로 정렬


15
range (5주)

▪ for문에서 사용할 수 있도록 연속된 정수를 생성하는 기능입니다.

▪ for 변수 in range(a):

변수에 차례로 0, 1, 2, 3, … , a-1 을 할당하는 방식으로 동작합니다.

특정 횟수만큼 반복하는 반복문으로 활용할 때에도 유용합니다.

▪ for 변수 in range(a,b):

변수에 차례로 a, a+1, a+2, … , b-1 을 할당합니다.

▪ for 변수 in range(a,b,c):

변수에 a, a+c, a+2c, … , b를 넘기 직전까지 를 할당합니다.

16
다중 반복문 (6주)
▪ 반복문 내에서 다른 반복문을 사용하는 방법입니다.

▪ 일반 반복문이 1차원 구조를 다루는데에 적합하다면, 다중 반복문은 2차원


이상의 구조 (인덱스가 2개 이상인 구조)를 다루는 데에 적합합니다.

1차원 구조 예) 리스트, 엑셀의 행/열

2차원 구조의 예) 리스트를 포함하는 리스트, 엑셀의 스프레드시트(표)

반복문 1:
⎵⎵⎵⎵명령문1 1 -> 2 -> 3 -> 2 -> 3 -> 4 ->
⎵⎵⎵⎵반복문 2:
⎵⎵⎵⎵⎵⎵⎵⎵명령문2 1 -> 2 -> 3 -> 2 -> 3 -> 4 ->
⎵⎵⎵⎵⎵⎵⎵⎵명령문3
1 -> 2 -> 3 -> 2 -> 3 -> 4
⎵⎵⎵⎵명령문4

17
튜플 tuple (6주)

▪ 원하는 원소를 소괄호 내에서 쉼표로 구분해서 생성합니다.

이름 = ( 원소1, 원소2, 원소3, 원소4, … )


▪ 소괄호를 사용하지 않아도 됩니다.

이름 = 원소1, 원소2, 원소3, 원소4, …

▪ 각 원소에 인덱스/네거티브 인덱스가 부여되어 있습니다.

이름[인덱스], 이름[인덱스1:인덱스2]

▪ 튜플 내에 다른 리스트/ 튜플을 포함할 수 있습니다.

18
딕셔너리 dict (1) (6주)
이름 점수
가연 77
나연 88
다연 99

{’가연’ : 77, ’나연’ : 88, ’다연’ : 99}


▪ 인덱스로 사용할 Key, 저장하려는 내용 value를 짝지어서 저장하는 구조.

[’가연’, ’나연’, ’다연’] [77, 88, 99]


((’가연’, 77), [’나연’, 88], [’다연’, 99])
▪ 리스트를 이용해서 비슷한 기능을 수행할 수는 있지만, 정수 인덱스를
사용해야 하므로 불편한 점이 많습니다.

▪ 인덱스가 없으므로 저장중인 Key:Value 쌍 사이의 순서가 없습니다.


19
딕셔너리 dict (2) (6주)

▪ 함수를 이용한 생성 방법

d = dict( [[’가연’, 77], [’나연’, 88], [’다연’, 99]] )

d = dict( zip( [’가연’, ’나연’, ’다연’], [77, 88, 99] ) )

▪ 내용 사용 방법

a = d[‘가연’]

▪ 내용 변경 및 추가 방법

d[‘라연’] = 23

▪ 내용 삭제 방법

del d[‘라연’]
20
딕셔너리 dict (3) (6주)

▪ 딕셔너리에 포함된 내용을 읽어오는 데는 여러 방법이 있습니다.

dict.keys() : 딕셔너리의 Key만을 선택하는 방법

dict.values() : 딕셔너리의 Value만을 선택하는 방법

dict.items() : 딕셔너리의 (Key, Value) 쌍을 선택하는 방법

▪ 사용 방법

for 를 이용하는 반복문에서 컨테이너 자리에 사용

list() 함수를 이용해서 리스트로 변환

▪ 원소 in 딕셔너리 - 원소가 Key로 포함 되어있다면 참으로 판명합니다.

21
셋 set (6주)

▪ 원소를 순서와 중복 없이 데이터를 저장하는 구조입니다.

{ 원소1, 원소2, 원소3, … }

set(컨테이너)
▪ 원소의 추가, 삭제가 가능합니다.

set.add(원소 하나), set.update(다른 집합)

set.remove(원소)

▪ 합집합, 교집합, 차집합 연산이 가능합니다.

교집합: & , 합집합: | (shift + \), 차집합: -

▪ 중복을 없애는 용도, 혹은 in 으로 포함 관계를 확인하기위해 사용합니다.


22
실습 5? (6주)

▪ 가게 1번과 가게 2번의 야채 재고가 딕셔너리로 주어져 있습니다. 두


딕셔너리의 내용을 합쳐서 모든 야채 재고를 저장하는 새로운 딕셔너리를
생성하세요.

dict1 = {'가지':25, '양배추':40, '양파':3}

dict2 = {'마늘':200, '가지':34, '양파':52, '대파':17}

{'가지': 59, '양배추': 40, '양파': 55, '마늘': 200, '대파': 17}

23
End of Document

You might also like