파이썬 기초 및 활용
<구조적 프로그래밍>
- 입력과 출력으로 이루어진 구성 요소를 계층으로 배치하여 프로그램을 구성하는 방법
- 알고리즘을 순서도로 표현할 때 순차, 선택, 반복 구조를 사용한다.
(예) 로봇청소기가 청소하는 알고리즘의 순서도 표현
- 순서도 기호
<언어별 자료구조>
프로그래밍 언어 | 자료구조 |
C | 배열, 연결 리스트 |
C++ | List, stack, queue, vector, set, multiset, map, multimap |
JAVA | List, set, queue, map |
파이썬 | List, set, tuple, dictionary |
<파이썬 기초 문법>
기능 | 문법 | 출력 |
변수 | s = 'data' print(s) |
data |
s1, s2 = 'data', 'info' print(s1) print(s2) |
data info |
|
s1 = s2 = 'data' print(s1) print(s2) |
data data |
|
출력 (입력 문자열) |
print('Hello world') print("Hello world") |
Hello world Hello world |
print('''Hellow world''') print("""Hellow world""") |
Hellow world Hellow world |
|
print("Hellow\nworld") | Hellow world |
|
출력 (다중 출력 문자열) |
print("Hello", "world") | Hello world |
출력 (sep) |
s1 = "One" s2 = "Two" print(s1, s2, sep='') # 공백 없음 print(s1, s2, sep=' ') # 공백 하나 print(s1, s2, sep='글자') # 글자 print(s1, s2, sep='\n') # 줄바꿈 print(s1, s2, sep='\t') # tap 공백 |
OneTwo One Two One글자Two One Two One Two |
출력 (end) |
print("Hello world", end=' ') # 공백 하나 print("Hello world", end='\n') # 줄바꿈 print("Hello world", end='글자') # 글자 |
Hello world Hello world Hello world글자 |
출력 (특수문자) |
print("따옴표'따옴표") print('따옴표"따옴표') print('따옴표\'따옴표') print("따옴표\"따옴표") print(r"슬래시\슬래시") print("슬래시\\슬래시") |
따옴표'따옴표 따옴표"따옴표 따옴표'따옴표 따옴표"따옴표 슬래시\슬래시 슬래시\슬래시 |
이스케이프 문자표
이스케이프 문자 | 설명 | 아스키 값 |
\' | 작은 따옴표 출력 | 39 |
\" | 큰 따옴표 출력 | 34 |
\\ | 백슬래시 출력 | 92 |
\? | 물음표 출력 | 63 |
\n | 줄바꿈 | 10 |
\t | 가로 탭 | 9 |
\v | 세로 탭 | 11 |
\b | 백스페이스 | 8 |
\r | 캐리지 리턴 | 13 |
기능 | 문법 | 출력 |
입력 | i = input("글자를 입력하세요: ") print(i, type(i)) |
글자를 입력하세요: 2 2 <class 'str'> |
i = int(input("글자를 입력하세요: ")) print(i, type(i)) |
글자를 입력하세요: 3 3 <class 'int'> |
|
i = float(input("글자를 입력하세요: ")) print(i, type(i)) |
글자를 입력하세요: 5 5 <class 'float'> |
|
조건문 | a = 2 b = 3 if a==b: print("좌변이 우변과 같다.") if a!=b: print("좌변이 우변과 같지 않다.") if a>b: print("좌변이 우변보다 크다.") if a>=b: print("좌변이 우변보다 크거나 같다.") if a<b: print("좌변이 우변보다 작다.") if a<=b: print("좌변이 우변보다 작거나 같다.") |
좌변이 우변과 같지 않다. 좌변이 우변보다 작다. 좌변이 우변보다 작거나 같다. |
a = 2 b = [2, 3, 5, 7] if a in b: print("우변 안에 좌변이 존재한다.") if a not in b: print("우변 안에 좌변이 존재하지 않는다.") if a is b: print("좌변이 우변과 같다.") if a is not b: print("좌변이 우변과 같지 않다.") |
우변 안에 좌변이 존재한다. 좌변이 우변과 같지 않다. |
|
a = int(input("값을 입력하세요: ") if a > 10: print("10보다 큽니다.") elif a > 5: print("10보다 크고 5보다 작습니다.") else print("5보다 작습니다.") |
값을 입력하세요: 7 10보다 크고 5보다 작습니다. |
|
반복문 | for i in range(4): print(i+1, "월 데이터입니다.") for i in range(5, 9): print(i, "월 데이터입니다.") for i in range(9, 13, 1): print(i, "월 데이터입니다.") # range(start, stop, step) # start: 시작 숫자 (기본값은 0) # stop: 종료 숫자 (포함되지 않음) # step: 숫자 간의 간격 (기본값은 1) |
1 월 데이터입니다. 2 월 데이터입니다. 3 월 데이터입니다. 4 월 데이터입니다. 5 월 데이터입니다. 6 월 데이터입니다. 7 월 데이터입니다. 8 월 데이터입니다. 9 월 데이터입니다. 10 월 데이터입니다. 11 월 데이터입니다. 12 월 데이터입니다. |
i = 1 while i <= 4: print(i, "월 데이터입니다.") i = i + 1 |
1 월 데이터입니다. 2 월 데이터입니다. 3 월 데이터입니다. 4 월 데이터입니다. |
|
정렬 | # 문자열 a = 'star' sorted(a) # 리스트 sorted([3, 5, 2, 7, 11]) # 튜플 b = (23, 17, 29, 13, 19) sorted(b) # reverse: 내림차순, key=abs 절댓값으로 정렬 c = [2, 0, -2, -4] sorted(c, key=abs, reverse=True) # sorted(x) 정렬 값을 리턴, 본래의 데이터는 유지 # x.sort() 본래의 데이터를 정렬 |
['a', 'r', 's', 't'] [2, 3, 5, 7, 11] [13, 17, 19, 23, 29] [-4, 2, -2, 0] |
함수 | def baghak(dorung, highA): print(dorung, "요", highA) baghak("안녕하세", ",") baghak("백학도령이에", "!") def highB(): a = "요즘 이게" b = "유행이라" c = "하는데요" print(a, b, c) return a, b, c x, y, z = highB() print(x, y, z) |
안녕하세요, 백학도령이에요! 요즘 이게 유행이라 하는데요 |
순차구조: 주어진 명령을 위해 아래 방향으로 절차화시킨 구조. 시작부터 차례대로 진행
선택구조: 주어진 조건을 참과 거짓으로 구분하여 적합한 쪽으로 처리하는 구조
반복구조: 주어진 조건에 따라서 주어진 명령을 반복 처리하는 구조
리스트
기능 | 문법 | 값 / 출력 |
리스트 (기초) |
list01 = [] list02 = [1, 2, 3] list03 = ['A', 'B', 'C', ] list04 = list() list05 = list('ABC') list06 = list([1, 2, 3]) list07 = list((1,2, 3)) list08 = list({1, 2, 3}) list09 = list(range(7)) list10 = list(range(3, 8)) list11 = list(range(3, 13, 2)) |
[] # 빈 리스트 생성 [1, 2, 3] ['A', 'B', 'C'] # 마지막 쉼표 가능 [] ['A', 'B', 'C'] [1, 2, 3] # 리스트 [1, 2, 3] # 튜플 [1, 2, 3] # 집합 [0, 1, 2, 3, 4, 5, 6] [3, 4, 5, 6, 7] [3, 5, 7, 9, 11] |
리스트 (반복문) |
list = [2, 3, 5, 7, 11] for s in list: print(s) print("리스트의 길이는 ", len(list), "입니다.") |
2 3 5 7 11 리스트의 길이는 5 입니다. |
리스트 (인덱싱) |
list = [2, 3, 5, 7, 11, 13, 17] list[0] # 앞에서는 0부터 시작 list[1] list[-1] # 뒤에서는 -1부터 시작 list[-2] |
2 3 17 13 |
리스트 (슬라이싱) |
list = [2, 3, 5, 7, 11, 13, 17] list[0:7] # 0~6 list[0:8] list[0:7:2] # 0~6까지 2씩 건너뜀 list[-7:-1] list[3:1] # 오류 X |
[2, 3, 5, 7, 11, 13] [2, 3, 5, 7, 11, 13, 17] [2, 5, 11, 17] [2, 3, 5, 7, 11, 13, 17] [ ] |
패턴 | 설명 | 실행 예 | 실행 결과 |
s[:] | 리스트 s의 원소를 모두 출력 | s[:] | [2, 3, 5, 7, 9, 11] |
s[:n] | 리스트 s의 원소 중 맨 앞부터 n개까지 출력 | s[:2] | [2, 3] |
s[i:] | 리스트 s의 원소 중 s[i]부터 맨 끝까지 출력 | s[2:] | [5, 7, 9, 11] |
s[-n:] | 리스트 s의 원소 중 -n부터 맨 끝까지 출력 | s[-2:] | [9, 11] |
s[::k] | 리스트 s의 원소 중 맨 앞부터 k개씩 건너뛰며 출력 | s[::2] | [2, 5, 9, 11] |
s[::-1] | 리스트 s의 원소 중 맨 끝부터 전부 출력 | s[::-1] | [11, 9, 7, 5, 3, 2] |
기능 | 문법 | 값 |
리스트 (조작1) |
list = [2, 3, 5, 7, 11, 13, 17] >>> list[3] = 0 >>> list.append(19) >>> list.insert(3, 0) >>> list.extend([19, 23]) >>> del list[3] # 지정 인덱스 값 삭제 >>> list.pop(3) # 지정 인덱스 값 삭제 (기본값 -1) >>> list.remove(7) # 검색 삭제 >>> list.clear() |
[2, 3, 5, 7, 11, 13, 17] [2, 3, 5, 0, 11, 13, 17] [2, 3, 5, 7, 11, 13, 17, 19] [2, 3, 5, 0, 7, 11, 13, 17] [2, 3, 5, 7, 11, 13, 17, 19, 23] [2, 3, 5, 11, 13, 17] [2, 3, 5, 11, 13, 17] [2, 3, 5, 11, 13, 17] [] |
리스트 (조작2) |
list1 = [11, 13, 5, 7] list2 = [2, 3, 17, 19] list3 = list1 + list2 >>> list3.sort() >>> 11 in list3 >>> list3.reverse() for s in zip(list1, list2): print(s) for a, d in zip(list1, list2): print("One:", a, ", Two:", d) |
[11, 13, 5, 7] [2, 3, 17, 19] [11, 13, 5, 7, 2, 3, 17, 19] [2, 3, 5, 7, 11, 13, 17, 19] True [19, 17, 3, 2, 7, 5, 13, 11] (11, 2) (13, 3) (5, 17) (7, 19) (One: 11 , Two: 2) (One: 13 , Two: 3) (One: 5 , Two: 17) (One: 7 , Two: 19) |
리스트 (2차원 리스트) |
data = [ [2, 3, 5], [7, 11, 13], [17, 19, 23] ] for dat in data: print(dat) |
[2, 3, 5] [7, 11, 13] [17, 19 23] |
내장 함수 | 내용 |
max(리스트명) | 최댓값을 구한다. |
min(리스트명) | 최솟값을 구한다. |
sum(리스트명) | 합계값을 구한다. |
sorted(리스트명) | 정렬한다. |
reversed(리스트명) | 리스트 요소값 역순으로 출력 |
튜플
tuple = (2, 3, 5)
항목 | 리스트 | 튜플 |
기호 | [ ] | ( ) |
변경 | O | X |
인덱싱 | O | O |
슬라이싱 | O | O |
추가/삽입/삭제 | O | X |
순서 | O | O |
'----------고2---------- > 자료 구조' 카테고리의 다른 글
[고2 자료구조] 2학기 2차 (1) | 2024.10.29 |
---|---|
[고2 자료구조] 2학기 1차 (3) | 2024.08.27 |
[고2 자료구조] 1학기 1차 (7) | 2024.05.03 |