Hyogi's Notebook

파이썬 python 응용 및 개념정리

by 효기’s

 

모듈

코드를 여러 파일로 분리해서 사용가능

study.py 에 있는 기능들을 test.py에서 사용가능 (모듈이라고 함)

※ 주의 : 같은 폴더 안에 있어야만 불러옴.

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

활동하기