Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch7
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch13
- 자바 기초
- 데이터 접근 기술
- 자바의 정석 기초편 ch6
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch2
- 자바 중급2편 - 컬렉션 프레임워크
- 스프링 mvc2 - 검증
- 자바로 계산기 만들기
- 2024 정보처리기사 시나공 필기
- 람다
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch9
- 자바 고급2편 - io
- 자바 고급2편 - 네트워크 프로그램
- 자바로 키오스크 만들기
- 자바의 정석 기초편 ch11
- 자바 중급1편 - 날짜와 시간
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch1
- @Aspect
- 자바의 정석 기초편 ch12
- 스프링 트랜잭션
- 스프링 입문(무료)
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch14
Archives
- Today
- Total
개발공부기록
Chapter 04 - 파이썬(파이썬 기본구조, 자료형, 입출력 함수) 본문
2024 정보처리기사 2차 합격/실기 6강 - 프로그래밍 언어 활용
Chapter 04 - 파이썬(파이썬 기본구조, 자료형, 입출력 함수)
소소한나구리 2024. 6. 23. 18:45728x90
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
'2024 정보처리기사 2차 합격 > 실기 6강 - 프로그래밍 언어 활용' 카테고리의 다른 글
Chapter 04 - 파이썬(기출문제) (0) | 2024.06.23 |
---|---|
Chapter 04 - 파이썬(연산자, 조건문 - if문, 반복문, 함수, 클래스, 클래스 상속) (0) | 2024.06.23 |
Chapter 03 - 자바(예상문제) (0) | 2024.06.23 |
Chapter 03 - 자바(기출문제_3) (0) | 2024.06.22 |
Chapter 03 - 자바(기출문제_2) (0) | 2024.06.22 |