파이썬 기초 및 활용

 

<구조적 프로그래밍>

  • 입력과 출력으로 이루어진 구성 요소를 계층으로 배치하여 프로그램을 구성하는 방법
  • 알고리즘을 순서도로 표현할 때 순차, 선택, 반복 구조를 사용한다.

(예) 로봇청소기가 청소하는 알고리즘의 순서도 표현

 

- 순서도 기호

 

<언어별 자료구조>

프로그래밍 언어 자료구조
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 자료구조] 1학기 1차  (7) 2024.05.03