관리 메뉴

개발공부기록

Chapter 04 - 파이썬(파이썬 기본구조, 자료형, 입출력 함수) 본문

2024 정보처리기사 2차 합격/실기 6강 - 프로그래밍 언어 활용

Chapter 04 - 파이썬(파이썬 기본구조, 자료형, 입출력 함수)

소소한나구리 2024. 6. 23. 18:45
728x90

2024년도 수제비 실기책(6판) 내용 정리


1. 파이썬 기본 구조

  • 사용자 정의 함수, 클래스가 먼저 정의되고 그 다음에 실행 코드가 나옴
  • 파이썬은 가독성을 위해 들여쓰기를 함 (기본적으로 강제 되어있음)

2. 자료형

1) 기본 자료형 (Primitive data Type)

  • 직접 자료를 표현하는 자료형 -> 숫자형, 논리형
유형 설명
숫자형(Number) 숫자를 저장하고자 할때 사용하는 자료형, 정수형(int), 실수형(float)이 있음
논리형(Logical; Boolean) 변수의 참, 거짓을 나타낼 때 사용하는 자료형, True(참), False(거짓), ** 스펠링 앞이 대문자임

2) 컬렉션 자료형(Collection Data Type)

  • 시퀀스 자료형(순서 있음) : 문자열형, 리스트형, 튜플형
  • 비시퀀스 자료형(순서 없음) : 세트형, 딕셔너리형

(1) 시퀀스 자료형 구조

 

  • 순서가 존재하며 순서가 중요함

 

[1] 문자열형(String)

 

  • 문자를 한 개 또는 여러 개 저장하고자 할때 사용하는 자료형
  • 포맷스트링을 이용하여 문자열을 출력할 수 있음
  • in연산자를 이용하여 찾고자 하는 문자열이 존재하면 True, 없으면 False를 리턴
  • 문자열 관련 메서드
메서드 설명
upper() 문자열을 대문자로 변환
lower() 문자열을 소문자로 변환
isalnum() 문자열이 알파벳 또는 숫자로만 구성되어 있으면 True, 아니면 False
isalpha() 문자열이 알파벳으로만 구성되어 있으면 True, 아니면 False
isdecimal() 문자열이 정수이면 True, 아니면 False
isdigit() 문자열이 숫자이면 True, 아니면 False
isspace() 문자열이 공백으로만 구성되어 있으면 True, 아니면 False
split() 문자열을 매개변수로 전달된 구분자로 나누어 리스트로 변환, 구분자(기본값' ')
print("Soojebi")
print("Soojebi", "\"world\"")   # 큰따옴표 나타내기(이스케이프)
print('Soojebi'*3)  # 문자열에 곱하기를하면 곱한 수만큼 출력됨

# Soojebi
# Soojebi "world"
# SoojebiSoojebiSoojebi

# 컬렉션 자료형 변수를 그냥 출력하면 []가 표시되지만, 문자열 변수를 출력했을 때는 []가 표시되지 않음
a = "Soojebi"
b = "%s" % " world"	# world를 %s에 치환해서 b에 저장
c = 123
print(a + b)
print("%s %d" % (a, c))	# %s는 문자열, %d는 정수형을 출력

# Soojebi world
# Soojebi 123

print("Hello" in "Hello World")		# Hello가 in 뒤의 문자열에 있음
print("Soojebi" in "Hello World")	# Soojebi가 in 뒤의 문자열에 없음

# True
# False

d = "Soojebi 123"
print(d.upper())	# 대문자
print(d.lower())	# 소문자
print(d.isalnum())	# 알파벳, 숫자로만 구성 되어있는지 여부
print(d.isalpha())	# 알파벳으로만 구성되어 있는지 여부
print(d.isdecimal())	# 10진 정수로만 구성 되어있는지
print(d.isdigit())		# 숫자로만 구성되어 있는지(제곱근 기호 등)
print(d.isspace())		# 공백으로만 구성 되어 있는지
print(d.split())		# 나누기(기본값은 공백)
print(d.split(sep='1'))	# sep = '1', 1을 기준으로 나누기

# SOOJEBI 123
# soojebi 123
# False
# False
# False
# False
# False
# ['Soojebi', '123']
# ['Soojebi ', '23'] 1을 기준으로 나눠서 Soojeibi ,와 '23'이 분리됨

str = "1,2,3".split(",")	# ,로 나누기
print(str)
# ['1', '2', '3']

 

[2] 리스트형(List)

 

  • 크기가 가변적으로 변하는 선형리스트의 성질을 가지고 있는 자료형
  • [ ]로 초기화
  • 리스트형 메서드
메서드 설명
append(a) 리스트 마지막 요소 뒤에 값a를 추가
clear() 리스트의 모든 항목을 삭제
copy() 리스트를 복사
count(x) 리스트에서 x항목의 개수를 반환
extend(i) 리스트 마지막에 컬렉션 자료형 i를 추가
index(x) 값 x와 같은 값을 가지고 있는 인덱스 번호를 반환
insert(i, x) 리스트의 i 번지 위치에 값 x를 삽입
pop() 마지막 항목을 삭제하고 값을 꺼내옴
remove(x) 리스트에서 해당하는 값 x를 제거, 해당하는 값이 여러개 있을 경우 가장 앞에 있는 값을 제거
reverse() 리스트의 위치를 전부 역순으로 변경
sort() 리스트의 항목들을 정렬
a = [20, 10 ,30]	# []로 선언
print(a)			# 자료형 변수를 그냥 출력하면 []가 포함되어 출력됨
					# [20, 10, 30]
                    
a.extend(a)         # 리스트 맨 뒤에 자료형을 추가함
print(a)			# [20, 10, 30, 20, 10, 30]

a.pop()             # 마지막 값을 삭제하면서 반환함
print(a)			# [20, 10, 30, 20, 10]

a.reverse()         # 리스트를 역순으로 변경
print(a)			# [10, 20, 30, 10, 20]

a.append(50)        # 리스트 맨 뒤에 50을 삽입
print(a)			# [10, 20, 30, 10, 20, 50]

a.insert(1, 100)    # index 1번위치에 100을 삽입
print(a)			# [10, 100, 20, 30, 10, 20, 50]

a.remove(10)        # 가장 앞에 있는 10 삭제
print(a)			# [100, 20, 30, 10, 20, 50]

# 2차원 리스트   [[], [], []] 형태로 선언 
b = [[1, 2], [3, 4], [5, 6]]
print(b)		# 전체 출력
print(b[0])		# 첫번째 행의 값 출력
print(b[1][0])	# 해당 위치의 값 출력, 컬렉션 자료형이 아니기때문에 []이 없이 출력됨

# [[1, 2], [3, 4], [5, 6]]
# [1, 2]
# 3

# 서로 길이가 다른 2차원 리스트
c = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
print(c)
print(c[0])
print(c[2])

# [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
# [1, 2, 3]
# [6, 7, 8, 9]

 

[3] 튜플형(Tuple)

 

  • 초기에 선언된 값에서 값을 생성, 삭제, 수정이 불가능한 형태의 자료형
  • ( )로 초기화
t = ('s', 'a', 'r', 'o', 'u') # ()로 선언
print(t)
print(t[3])

# ('s', 'a', 'r', 'o', 'u')	# ()괄호가 포함되어 출력됨
# o		# ()가 없이 출력됨

 

(2) 시퀀스 자료형 요소 접근 방법 - 인덱싱(indexing)

 

  • 특정 요소에 접근하는 방법
첫 번째 요소 두 번째 요소 ... 뒤에서 두번째 요소 뒤에서 첫번째 요소
0 1 ... (n - 2) (n - 1)
-n -(n - 1) ... -2 -1
a = [4, 2, 7 ,3, 5]
print(a[0], a[1], a[2], a[3], a[4])
print(a[-5], a[-4],a[-3], a[-2], a[-1])	# -로도 접근이가능

# 4 2 7 3 5
# 4 2 7 3 5

print("Soojebi"[3])		# j, 4번째값(인덱스 3번의 값) 출력
print("Soojebi"[-7])	# s, 첫번째값(인덱스 -7번의 값) 출력

str = "Soojebi"
print(str[1])			# o, 2번째값(인덱스 1번의 값)

 

(3) 시퀀스 자료형 요소 접근 방법 - 슬라이싱(Slicing)

 

  • 여러 개의 데이터에 동시에 접근하는 기법
  • 시퀀스변수명[시작 : 종료 : 스텝]
형태 설명
시작 슬라이싱을 시작할 인덱스
생략할 경우 '시퀀스변수명[ : 종료] or [ : 종료 : 스텝]' 형태가 되며 처음부터 슬라이싱
종료 슬라이싱을 종료할 인덱스
종료 인덱스에 있는 인ㄷ게스 전까지만 슬라이싱 ex) [:4] 면 4-1인 3의 index까지만 슬라이싱함
생략할 경우'[시작 : ] or [시작 : : 스텝]' 형태가 되며 생략할경우 마지막까지 슬라이싱
스텝 몇 개씩 끊어서 슬라싱을 할지 결정
생략할 경우 '[시작 : 종료] or [시작 : 종료 : ]' 형태가 되며 1이 기본값이 됨
print("Soojebi"[1:])    # 인덱스 1부터 끝까지 출력 
print("Soojebi"[2:4])   # 인덱스 2부터 3까지 출력
print("Soojebi"[:3])    # 시작부터 인덱스 2까지 출력

# oojebi
# oj
# Soo

a = [4, 2, 7, 3, 5, 10, 15, 1, 2]
print(a[0 : 6 : 2]) # 홀수번째 인덱스의 값만 출력됨

t = ('s', 'a', 'r', 'o', 'u')   # 튜플도 가능함
print(t[1 : 4 : 2]) # 짝수번째 인덱스의 값만 출력

# [4, 7, 5]
# ('a', 'o')

 

(4) 시퀀스 자료형 연산자

 

[1] 연결, 반복 연산자

  • + : 두 시퀀스 자료형을 연결
  • * : 시퀀스 자료형을 반복

[2] in, not in 연산자

 

  • in : 리스트 내부의 특정 값이 존재하는지 확인, 존재하면 True
  • not in : 리스트 내부의 특정 값이 존재하지 않는지 확인, 존재하지 않으면 True
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
print(a*3)

# [1, 2, 3, 4, 5, 6]
# [1, 2, 3, 1, 2, 3, 1, 2, 3]

print(1 in a)
print(2 in b)
print(8 not in a)

# True
# False
# True

 

(5) 비시퀀스 자료형 구조

 

  • 순서가 존재하지 않으며 순서가 존재하지 않으니 순서가 중요하지 않음

[1] 세트형(set)

 

  • 중복된 원소를 허용하지 않는 집합의 성질을 가지고 있는 자료형
  • set이라는 키워드나 { }로 초기화
  • 세트형 메서드
메서드 설명
add(값) 값을 1개 추가
update([값1, 값2, ...]) 여러개의 값을 한번에 추가
remove(값) 특정 값을 제거
s = {1, 5, 7}
s.add(3)    # 3 추가
print(s)	# {1, 3, 5, 7}

s.add(5)    # 이미 입력되어있는 값을 입력하면 입력이 안됨
print(s)	# {1, 3, 5, 7}

s.update([1, 2, 3, 4])  # 여러값을 추가, 1과 3은 이미 있어서 2와 4만 추가 됨
print(s)	# {1, 2, 3, 4, 5, 7}
#  순서가 정렬되어 삽입된 것으로 보이지만 의도된 동작이 아니며 해싱 알고리즘에 의해 그렇게 보이는 것일 뿐임

s.remove(2) # 값2를 제거
print(s)	# {1, 3, 4, 5, 7}

 

[2] 딕셔너리(Dictionary)

 

  • 키와 값으로 구성된 객체를 저장하는 구조
  • 생성/변경/삭제
형태 문법 설명
생성 딕셔너리명 = {키1 : 값1, 키2 : 값2, .... } {, }안에 콜론(:)을 이용하여 키와 값을 구분하여 선언
변경 딕셔너리명[키] = 값 기존 딕셔너리 변수에 키와 값을 추가
기존 변수에 해당 키에 해당하는 값이 있었으면 값을 변경
삭제 del 딕셔너리명[키] 기존 변수에서 해당 키와 키에 해당하는 값을 삭제
d = {'A': 5, 'C': 6, 'B': 7}	# 딕셔너리 선언
print(d)		# {'A': 5, 'C': 6, 'B': 7}

d['K'] = 8	# 딕셔너리에 'K'를 키로, 8을 값으로 하여 추가(딕셔너리의 키에 'K'가 없으므로)
print(d)	# {'A': 5, 'C': 6, 'B': 7, 'K': 8}

del d['C']	# 'C'에 해당하는 키와 값을 삭제
print(d)	# {'A': 5, 'B': 7, 'K': 8}

d['K'] = 6	# 'K'키에 해당되는 값을 6으로 변경함
print(d)	# {'A': 5, 'B': 7, 'K': 6}

3) 자료형 함수

(1) type 함수 : 자료형을 확인

print(type(31))                # <class 'int'>
print(type(2.7))               # <class 'float'>
print(type(True))              # <class 'bool'>
print(type("Soojebi"))         # <class 'str'>
print(type([1, 2, 3]))         # <class 'list'>
print(type((1, 2, 3)))         # <class 'tuple'>
print(type({1, 2, 3}))         # <class 'set'>
print(type({1: 2, 3: 4}))      # <class 'dict'>

 

(2) len 함수 : 자료형의 크기를 계산

print(len("Soojebi"))                       # 7, 문자열 길이
print(len({"name": "Soojebi", "age": 25}))  # 2, 딕셔너리 길이
print(len((1, 2, 3)))                       # 3, 튜플 길이
print(len([1, 2, 3]))                       # 3, 리스트 길이
print(len({1, 2, 3}))                       # 3, 세트 길이

3. 입출력 함수

1) 표준 출력 함수(print)

(1) 단순 출력 및 개행

 

  • print(문자열, end) : end값을 따로 지정해주지 않으면 기본값이 '\n'(개행)이므로 자동으로 개행이 됨

(2) 변수 출력

 

  • print(변수명)
print("Hello", end='')          # HelloSoojebi
print('Soojebi')
print("Hello", end='!')         # Hello!Soojebi
print('Soojebi')
print("Hello", end=' ')         # Hello Soojebi
print('Soojebi')

a = 5
print(a)                        # 5
b = 3
print('a=', a, 'b=', b)         # a= 5 b= 3 자동으로 값 사이에 공백이 생김
print('a=', a, 'b=', b, sep='') # a=5b=3  sep으로 출력항목 사이의 값을 ''로 설정하여 공백을 제거

 

2) 표준 입력 함수(input)

  • 문자열, 숫자 등을 입력받을 수 있는 입력 함수
  • 정수형과 실수형과 같은 숫자를 입력받을 때는 문자열로 저장한 후 eval함수를 써서 숫자로 변환해 주어야 함
  • eval함수로 숫자로 변환할 수 없는 형태의 문자열일 경우 에러가 발생
s = input()	# 입력
s = eval(s)	# 숫자로 변환, 이상태에서 숫자로 변환이 불가능한 문자열을 입력하면 에러남
print(s)
print(type(s))

# 1을 입력하면 숫자로 변환된 1이 출력
# <class 'int'>
728x90