파이썬 python 응용 및 개념정리
by 효기’s
모듈
코드를 여러 파일로 분리해서 사용가능
※ 주의 : 같은 폴더 안에 있어야만 불러옴.
import study # study.py 파일이 같은 폴더 안에 존재한다고 가정
print(study.add(3, 4)) # study.py 파일안에 add 함수가 선언되어 있음
# 출력 결과는 7이 출력됨
▶ as의 사용법
import study as st # as가 붙으면 모듈로 받아왔던 study.py를 st로 바꿀 수 있음.
print(st.add(3, 4))
print(st.multiply(3, 4))
▶ study 파일에서 특정 함수만 지정해서 사용 가능
from study import add, multiply # study 모듈에서 add와 multiply만 불러와라
print(add(3, 4))
print(multiply(3, 4))
from study import * # study 모듈에서 모든 함수를 불러와라 (출처가 불명확해서 비권장)
print(add(3, 4))
print(multiply(3, 4))
스탠다드 라이브러리 (Standard library_표준 라이브러리)
import math # 수학 관련된 기능을 모와둔것
print(math.log2(16)) # log 기능 사용
import random # 랜덤한 값을 만들 때 사용
print(random.random()) # 매번 다른 결과가 나옴
print(random.randint(1, 100)) # 1이상 100이하 정수 N중 랜덤한 정수 리턴
print(random.uniform(1, 100)) # 1이상 100이하 소수 N중 랜덤한 소수 리턴
import os # 운영체제의 약자 (파이썬으로 운영체제를 조작함)
print(os.getlogin()) # 현재 컴퓨터의 어떤 계정으로 로그인했는지 알 수 잇음.
print(os.getcwd()) # 현재 이 파일에 있는 폴더의 경로를 받아 올 수 있음.
import datetime # 날짜와 시간을 다루기 위한 클래스를 갖춤
date = datetime.datetime(2023, 3, 19)
print(date) # 2023-03-19 00:00:00
date = datetime.datetime(2023, 5, 30, 2, 4, 11) # 2023-05-30 02:04:11
print(date) # 2023-05-30 02:04:11
today = datetime.datetime.now()
print(today) # 현재 시간 출력
today = datetime.datetime.now() # 두 datetime 값 사이의 기간 구하기
date = datetime.datetime(2020, 1, 10, 11, 2, 5)
print(today - date) # 1163 days, 15:37:54.947300
today = datetime.datetime.now() # timedelta + datetime
date = datetime.timedelta(days=1, hours=4, minutes=1, seconds=3)
print(today)
print(today + date) # 2023-03-20 06:49:15.733661
now = datetime.datetime.now()
print(now) # 현재 날짜 정보
print(now.year) # 년
print(now.month) # 월
print(now.day) # 일
print(now.hour) # 시
print(now.minute) # 분
print(now.second) # 초
print(now.microsecond) # 마이크로초
today = datetime.datetime.now()
print(today)
print(today.strftime("%A, %B %dth %Y")) # datetime 포맷팅
# 출력 결과 Sunday, March 19th 2023
Input
사용자가 내용을 입력 가능
number = input("번호: ") # 1234
print(number) #1234
number = input("번호: ") # 1234
print(10 + number) # 오류 (문자열과 숫자를 더해서 오류)
print(10 + int(number)) # 정상 1244
파일 읽기
with open('meno.txt', 'r') as file: # open 파일 열고 읽기 (file 변수에 넣기)
for show in file:
print(show) # 변수 show에 meno.txt 내용을 반복해서 출력함
# meno.txt 파일 읽기 완료
# 1. my name is hyogi
# 공백
# 2. nice to meet you
# 공백
# 3. I love python
strip
문자열에서 앞뒤로 있는 화이트 스페이스를 없애줌
print(" LOVE PYTHON ".strip()) # LOVE PYTHON (앞뒤에 있는 공백 없애줌)
print(" \n \n \t Love PYTHON \t ".strip()) # LOVE PYTHON (똑같이 앞뒤 공백 없애줌)
with open('meno.txt', 'r') as file:
for show in file:
print(show.strip())
# 1. my name is hyogi
# 2. nice to meet you
# 3. I love python strip을 사용하여 공백이 사라짐
split
파라미터를 기준으로 문자열을 나눔
str_hyogi = "a. b. c. d. e"
print(str_hyogi.split(". ")) # ['a', 'b', 'c', 'd', 'e'] . 을 기준으로 문자열을 나눔(띄어쓰기를 포함하면 띄어쓰기 없어짐)
car = "K3, K5, K7"
print(car.split(",")) # ['K3', ' K5', ' K7'] 쉼표, 을 기준으로 문자열을 나눔
car_name = "santafe, sonata"
car_name = car_name.split(", ")
first = car_name[1]
last = car_name[0]
print(first, last) # sonata santafe (순서가 바뀜)
print(" \n \n \t Love PYTHON \t ".split()) # 화이트 스페이스 없애고 싶을때 ['Love', 'PYTHON']
key = " \n \n \t Love PYTHON \t ".split()
print(key[0] + key[1]) # LovePYTHON (모두 문자열로 취급)
리스트 (list)
변수에 값을 여러개 저장하고 싶은 경우
# 리스트 (list)
num = [1, 2, 3, 4, 5]
food = ["짜장면", "짬뽕", "탕수육"]
print(num) # [1, 2, 3, 4, 5]
print(food) # ['짜장면', '짬뽕', '탕수육']
# 인덱싱 (indexing)
print(food[0], food[2]) # 짜장면 탕수육
print(food[9]) #오류
print(num[2] + num[4]) # 8
print(num[-1], num[-3]) # 5 3
# 리스트 슬라이싱 (list slicing)
print(num[0:3]) # [1, 2, 3] 0~2까지 출력
print(num[2:]) # [3, 4, 5] 2부터 끝까지 출력
print(num[ :2]) # [1, 2] 앞에서부터 1까지까지 출력
num[3] = 9
print(num) # [1, 2, 3, 9, 5] 인덱스 [3]이 9로 변경
# 리스트 값의 존재 확인
num = [5, 6, 7, 10, 4, 8, 5, 3]
print(10 in num) # True 반환 (10이 리스트에 있음)
print(100 in num) # False 반환 (100이 리스트에 없음)
print(7 not in num) # False (리스트에 값이 있으면 False)
print(100 not in num) # True (리스트에 값이 없으면 True)
# 리스트 내부에 또 다른 리스트 (Nested List)
num = [[5, 6], [7, 10], [4, 8], [5, 3]]
print(num[1]) # [7, 10]
print(num[2][1]) # 8
# index 메소드
num = ["짜장면", "짬뽕", "탕수육", "짬짜면"]
print(num.index("짬뽕")) # 1
# remove 메소드
num = ["짜장면", "짬뽕", "탕수육", "짬짜면"]
num.remove("짜장면")
print(num) # ['짬뽕', '탕수육', '짬짜면']
▶ 리스트 함수
# append : 리스트에 값을 추가 (오른쪽 끝에 값을 삽입 / "추가연산")
num = []
print(len(num)) # 0
num.append(6) # 리스트에 추가하고 싶은 값을 적는 함수 append()
num.append(2) # 리스트에 추가하고 싶은 값을 적는 함수 append()
print(num) # [6, 2]
print(len(num)) # 2
# del은 리스트에 값을 삭제
num = [5, 6, 7, 10, 4, 8, 5, 3]
del num[5] # 5번 인덱스 삭제
print(num) # [5, 6, 7, 10, 4, 5, 3]
# 리스트에 값을 삽입 (원하는 위치에 값을 삽입 / "삽입연산")
num.insert(5, 2) # 5번 인덱스에 2를 삽입
print(num) # [5, 6, 7, 10, 4, 2, 5, 3]
▶ 리스트 정렬
# 리스트 정렬
num = [5, 6, 7, 10, 4, 8, 5, 3]
# sorted
show_list = sorted(num) # 오름차순으로 정렬
print(show_list) # [3, 4, 5, 5, 6, 7, 8, 10]
show_list = sorted(num, reverse=True) # 반대로 리스트를 정렬해라
print(show_list) # [10, 8, 7, 6, 5, 5, 4, 3]
print(num) # [5, 6, 7, 10, 4, 8, 5, 3] sorted는 새로운 리스트를 정렬할뿐 num에 있는 리스트는 건들이지 않는다.
# sort()
print(num.sort()) # None (sort는 아무것도 리턴하지 않는다.)
num.sort()
print(num) # [3, 4, 5, 5, 6, 7, 8, 10] 정렬됨
num.sort(reverse=True)
print(num) # [10, 8, 7, 6, 5, 5, 4, 3] 반대로 정렬됨
num.reverse()
print(num) # [10, 8, 7, 6, 5, 5, 4, 3] 반대로 정렬됨
for 반복문
for문과 while문은 같은 반복문이며 상황에 맞는 반복문을 사용해야함
# for 반복문
num = [1, 2, 3, 4, 5, 6, 7]
for meno in num:
print(meno) # 세로로 1,2,3,4,5,6,7 이 출력됨
# while 반복문
i = 0
while i < len(num):
print(num[i])
i += 1 # 세로로 1,2,3,4,5,6,7 이 출력됨
range 함수
장점 : 간편, 깔끔, 메모리 효율
# range 함수
for num in range(1, 7):
print(num) # 세로로 1~6까지 출력
for num in range(5, 8):
print(num) # 세로로 5~7까지 출력
for num in range(5):
print(num) # 세로로 0~4까지 출력
for num in range(1, 5, 2): # 1~4까지 2간격을 줌
print(num) # 세로로 1, 3 출력
사전 (dictionary)
key-value pair (키와 값이 쌍을 이룬다.)
▶ 사전과 리스트의 차이
① 리스트가 순서대로 0, 1, 2, 3 사전은 순서 개념이 없음
② 리스트는 정수, 사전은 정수가 아니여도 됨
hyogi_dic = {
3: 20, # 값이 3이고 키가 20
4: 6,
6: 3
}
print(hyogi_dic[6]) # 키가 6인 3을 출력함
# 사전에 새로운 쌍을 추가함
hyogi_dic[11] = 100 # 11의 키에 100을 저장함
print(hyogi_dic) # {3: 20, 4: 6, 6: 3, 11: 100}
# 정수가 아니여도 되는 사전
food_dic = {
'중식': '짬뽕',
'한식': '된장찌개',
'일식': '초밥'
}
print(food_dic) # {'중식': '짱뽕', '한식': '된장찌개', '일식': '초밥'}
▶ 사전의 활용
hyogi_dic = {
3: 20, # 값이 3이고 키가 20
4: 6,
6: 3
}
print(hyogi_dic[6]) # 키가 6인 3을 출력함
# 사전에 새로운 쌍을 추가함
hyogi_dic[11] = 100 # 11의 키에 100을 저장함
print(hyogi_dic) # {3: 20, 4: 6, 6: 3, 11: 100}
# 정수가 아니여도 되는 사전
food_dic = {
'중식': '짬뽕',
'한식': '된장찌개',
'일식': '초밥'
}
print(food_dic.values()) # dict_values(['짱뽕', '된장찌개', '초밥'])
print('짬뽕' in food_dic.values()) # True
# 값을 출력
for value in food_dic.values(): # answer 변수에 food_dic의 값 하나씩 출력
print(value) #짬뽕 된장찌개 초밥이 세로로 출력
# 키를 출력
for key in food_dic.keys(): # answer 변수에 food_dic의 키를 하나씩 출력
print(key) #중식, 한식, 일식 세로로 출력
# 값과 키를 출력
for key in food_dic.keys():
value = food_dic[key]
print(key, value) #중식 짬뽕\n 한식 된장찌개\n 일식 초밥 출력
for key, value in food_dic.items():
print(key, value) #중식 짬뽕\n 한식 된장찌개\n 일식 초밥 출력
Aliasing
x = [1, 2, 3, 4, 5, 6]
y = x
y[3] = 6
print(x) #[1, 2, 3, 6, 5, 6]
print(y) #[1, 2, 3, 6, 5, 6] (y는 x의 가명(alias))
x = [1, 2, 3, 4, 5, 6]
y = list(x) # x에 list함수를 씀(새로운 list가 만들어짐)
y[3] = 6
print(x) #[1, 2, 3, 4, 5, 6] # x는 새로운 list이므로 y의 영향권에서 벗어남
print(y) #[1, 2, 3, 6, 5, 6]
리스트와 문자열
차이점 : 리스트는 인덱스 값으로 값을 변경할 수 있는 반면 문자열은 변경 불가능하다.
공통점 : 인덱싱 가능, for 반복문 활용 가능, 슬라이싱 가능, 덧셈 연산가능, len 가능
# 리스트 list
list_num = ['1', '2', '3', '4', '5', '6']
print(list_num[3]) # 4
print(list_num[0:2]) # ['1', '2']
print(len(list_num)) # 6
# 리스트 연결
list_one = 'My name is'
list_two = ' hyogi'
list_sum = list_one + list_two
print(list_sum) # My name is hyogi
# 리스트 변경
num = [1, 2, 3, 4, 5]
num[3] = 100
print(num) # [1, 2, 3, 100, 5]
# 문자열 string
string_num = '123 456!'
print(string_num[4]) # 4
print(string_num[0:2]) # 12
print(len(string_num)) # 8 (문자열 띄어쓰기, 느낌표도 길이에 포함함)
# 문자열 연결
str_one = 'My name is'
str_two = ' hyogi'
str_sum = str_one + str_two
print(str_sum) # My name is hyogi
# 문자열 변경
food = 'jajang'
food[3] = 'D'
print(food) # 오류
본 포스팅은 codeit; 스터디를 하며 요약했으며
강의에 있는 예제를 저자가 알아보기 쉽도록 변경하여 포스팅 했습니다.
'Studying > Python' 카테고리의 다른 글
파이썬 python 기본 문법 및 핵심 개념 (0) | 2023.03.18 |
---|
블로그의 정보
감성 개발자 효기
효기’s