-정수 값을 입력 받아 16진수(hexadecimal)로 변환하여 돌려주는 함수
>>> print(hex(3))
print(hex(9))
print(hex(10))
print(hex(15))
0x3
0x9
0xa
0xf
#앞에 '0x'가 붙는다
-객체(object)를 입력받아 객체의 고유 주소 값을 돌려주는 함수
-문자열 형태의 숫자나 소숫점이 있는 숫자 등을 정수 형태로 돌려주는 함수
>>> int('0xff', base = 16) #문자열 형태의 숫자를 16진수로 변환
255
-반복 가능한 자료형을 입력받아 리스트로 만들어주는 함수
>>> list("python")
['p','y','t','h','o','n']
>>> list((1,2,3))
[1,2,3]
-map(f, iterable) : 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다
-반복 가능한 자료형 : 리스트, for문에서 'in' 다음으로 오는 부분 등
-입력 받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려준다
>>> def two_times(numberList):
result = []
for number in numberList:
result.append(number*2)
return result
>>> result = two_times([1,2,3,4])
>>> print(result)
[2,4,6,8]
>>> def two_times(x):
return x*2
>>> list(map(two_times, [1,2,3,4]))
[2,4,6,8]
>>> list(map(lambda x: x*2, [1,2,3,4]))
[2,4,6,8]
>>> list(map(int, ["1","2","3","4"]))
[1,2,3,4]
-정수 형태의 숫자를 8진수 문자열로 바꾸어 돌려주는 함수
-문자의 아스키 코드 값을 돌려주는 함수
-숫자를 입력받아 반올림해주는 함수
-입력값을 정렬한 후 그 결과를 '리스트' 로 돌려주는 함수
-리스트 자료형에도 sort 함수가 있지만, 이는 리스트 객체 그 자체만 정렬할 뿐 정렬된 결과를 돌려주지는 않는다
-입력받은 리스트나 튜플의 모든 요소의 합을 돌려주는 함수
>>> sum([1,2,3])
6
>>> sum([1,2,3], [4,5,6])
TypeError: can only concatenate list (not "int") to list
>>> import numpy as np
>>> np.sum(np.array(([[1,2,3], [4,5,6]])))
21
-동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수
>>> for i in zip([1,2,3], [4,5,6], ['a','b','c']):
print(i)
(1, 4, 'a')
(2, 5, 'b')
(3, 6, 'c')
>>> for i, j, k in zip([1,2,3], [4,5,6], ['a','b','c']):
print(i, j, k)
1 4 a
2 5 b
3 6 c
>>> pip install folium
>>> import folium
>>> import pandas as pd
>>> import os
os.getcwd()
>>> pip install openpyxl
>>> df = pd.read_excel("서울지역대학교위치.xlsx")
df
>>> df.대학교
df.경도
df.위도
>>> for i, j, k in zip(df.대학교, df.경도, df.위도):
print(i, j, k)
>>> seoul_map = folium.Map(location = [37.55, 126.98], zoom_start = 12)
seoul_map
>>> for name, lat, long in zip(df.대학교, df.경도, df.위도):
folium.Marker([lat, long], tooltip=name).add_to(seoul_map)
seoul_map
#최소 코드로 표현
>>> df = pd.read_excel("서울지역대학교위치.xlsx")
seoul_map = folium.Map(location = [37.55, 126.98], zoom_start = 12)
for name, lat, long in zip(df.대학교, df.위도, df.경도):
folium.Marker([lat, long], tooltip = name).add_to(seoul_map)
seoul_map
-sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다
>>> import sys
>>> sys.path #파이썬 모듈들이 저장되어 있는 위치를 나타낸다
>>> sys.path.append #경로 이름 추가하기
>>> sys.argv #명령 행에서 인수 전달하기
-객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈
-pickle.dump(객체, 파일) 로 저장하고,
-pickle.load(파일) 로 로딩한다
>>> import pickle
>>> df.to_csv("aaa.csv") #csv로 변환하여 저장한다
>>> df.to_excel("bbb.xlsx") #excel로 변환하여 저장한다
#Save pickle
>>> with open("test.pickle", "wb") as f:
pickle.dump(df, f)
#Load pickle
>>> with open("test.piclke", "rb") as f:
data = pickle.load(f)
print(data)
-환경변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈
#내 시스템의 환경 변수 값을 알고 싶을 때
>>> import os
>>> os.environ #딕셔너리 객체로 돌려준다
#디렉터리 위치 변경하기
>>> os.chdir()
#디렉터리 위치 돌려받기
>>> os.getcwd()
#시스템 명령어 호출하기
>>> os.system("dir")
>>> !dir
-os.mkdir(디렉터리) : 디렉터리를 생성한다
-os.rmdir(디렉터리) : 디렉터리를 삭제한다 (단, 디렉터리가 비어있어야 삭제가 가능하다)
-os.unlink(파일이름) : 파일을 지운다
-os.rename(src, dst) : src라는 이름의 파일을 dst라는 이름으로 바꾼다
-디렉터리 안의 파일들을 읽어서 돌려준다
-'*,?' 등 메타 문자를 써서 원하는 파일만 읽어들일 수도 있다
>>> import glob
>>> glob.glob("C:/Users/admin/*")
>>> glob.glob("C:/Users/admin/a*")
>>> glob.glob("C:/Users/admin/*.csv")
>>> import time
>>> time.time()
>>> s = time.time()
s / 60
>>> m = s / 60
m / 60
>>> c = m / 60
c / 24
>>> time.localtime(time.time())
>>> time.localtime(time.time()).tm_year
>>> time.localtime(time.time()).tm_hour
>>> now = time.localtime(time.time())
time.strftime('%x', now)
>>> time.strftime('%X', now)
>>> time.strftime('%B', now)
>>> time.strftime('%Y-%m-%d %I:%M:%S %p', now)
>>> time.strptime('2022-09-13 09:58:14 PM', '%Y-%m-%d %I:%M:%S %p')
>>> while True:
print("Hello")
time.sleep(1)
-달력을 볼 수 있게 해주는 모듈
>>> import calendar
>>> calender.calendar(2022)
>>> calender.prmonth(2022, 9)
>>> calender.weekday(2022, 9, 13)
>>> print(calendar.weekday(2022, 9, 11))
print(calendar.weekday(2022, 9, 12))
print(calendar.weekday(2022, 9, 13))
print(calendar.weekday(2022, 9, 14))
print(calendar.weekday(2022, 9, 15))
print(calendar.weekday(2022, 9, 16))
print(calendar.weekday(2022, 9, 17))
-난수(규칙이 없는 임의의 수)를 발생시키는 모듈
>>> import random
>>> random.random #0과 1 사이의 '실수' 중에서 난수 값 출력
>>> random.randint(1, 10) #1과 10 사이의 '정수' 중에서 난수 값 출력
>>> li = []
for _ in range(10):
li.append(random.randint(1, 20))
li
#중복되는 수가 없도록
>>> li = []
for _ in range(10):
a = random.randint(1, 20)
if a in li:
continue
else:
li.append(a)
li
>>> random.choice([1,2,3,10])
>>> random.choice(range(5))
>>> np.random.uniform() #random.random() 과 같은 기능을 한다
>>> data = [1,2,3,4,5]
random.shuffle(data) #리스트의 항목을 무작위로 섞는다
data
[1,3,2,5,4]
-기본 웹 브라우저를 자동으로 실행하는 모듈
>>> import webbrowser
>>> webbrowser.open("www.naver.com")
>>> webbrowser.open_new("www.naver.com") #새로운 창에 열리도록 한다
-보통 컴퓨터에서 동작하고 있는 1개의 프로세스는 한 가지 일만 하지만, 스레드(Thread)를 사용하면 한 프로세스 안에서 2가지 또는 그 이상의 일을 동시에 수행할 수 있다
>>> import time
>>> def long_task(): #5초의 시간이 걸리는 함수
for _ in range(5):
time.sleep(1) #1초씩 대기한다
print("working: %s" %i)
print("Start")
>>> long_task()
>>> print("Start")
for _ in range(3): #long_task()를 3회 수행
long_task()
print("End")
>>> import threading
>>> def long_task():
for _ in range(5):
time.sleep(1)
print("working: %s" %i)
print("Start")
>>> threads = []
for _ in range(5):
t = threading.Thread(target = long_task) #스레드 생성
threads.append(t)
>>> for t in threads:
t.start() #스레드 실행
>>> for t in threads:
t.join() #해당 스레드가 종료될 때까지 기다린다
print("End")
-프로그램을 만들려면 가장 먼저 '입력'과 '출력'을 생각해라
-구구단 프로그램 중 2단을 만든다면 2를 입력값으로 주었을 때 어떻게 출력되어야 할까
-함수 이름은? GuGu
-입력받는 값은? 2
-출력하는 값은? 2단(2, 4, 6, 8, ..., 18)
-결과는 어떤 형태로 저장할 것인가? 연속된 자료형 이니까 -> 리스트
>>> def GuGu(n):
result = []
i = 1
while i < 10:
result.append(n * i)
i = i + 1
return result
>>> print(GuGu(2))
-1000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구해라
-입력받는 값은? 1~999
-출력하는 값은? 3의 배수와 5의 배수의 총합
-생각해 볼 것은? 3의 배수와 5의 배수를 어떻게 찾을 것인지, 3의 배수와 5의 배수가 겹칠 때는 어떻게 할 것인지
>>> i = 1
sum3 = 0
sum5 = 0
while i < 1000:
if i%3 == 0:
sum3 += i
elif i%5 == 0:
sum5 += i
i += 1
>>> sum_t = sum3 + sum5
print(sum_t)
>>> result = 0
for i in range(1000):
if i%3 == 0 or i%5 == 0:
result += i
>>> print(result)
-게시물의 총 건수와 한 페이지에 보여줄 게시물 수를 입력했을 때 총 페이지 수는?
-함수 이름은? getTotalPage
-입력받는 값은? 게시물의 총 건수(m), 한 페이지에 보여줄 게시물 수(n)
-출력하는 값은? 총 페이지 수
>>> def getTotalPage(m, n):
if m%n == 0:
return m//n
else:
return (m//n) + 1
-원하는 메모를 파일에 저장하고, 추가 및 조회가 가능한 간단한 메모장을 만들자
-필요한 기능은? 메모 추가하기, 조회하기
-입력받는 값은? 메모 내용, 프로그램 실행 옵션
-출력하는 값은? memo.txt
-작성 후 memo.py 로 저장
>>> import sys
#sys.argv : 프로그램을 실행할 때 입력된 값을 읽어들일 수 있는 파이썬 라이브러리
option = sys.argv[1] #프로그램 실행 옵션 값
memo = sys.argv[2] #메모 내용
print(option)
print(memo)
-입력으로 전달한 옵션과 메모 내용이 그대로 출력된다
-'-a' 가 option, "Life is too short" 이 memo 에 해당된다
C:\Users\admin>python memo.py -a "Life is too short"
-a
Life is too short
>>> import sys
option = sys.argv[1]
if option == '-a': #옵션이 '-a'인 경우에만
memo = sys.argv[2] #memo 값을 읽어 memo.txt 파일에 그 값을 써라
f = open('memo.txt', 'a') #메모에 새로운 내용이 '추가' 되어야 하므로 파일 열기 모드 'a'
f.write(memo)
f.write('\n') #메모를 추가할 때마다 다음 줄에 저장되도록
f.close()
C:\Users\admin>python memo.py -a "Life is too short"
C:\Users\admin>python memo.py -a "You need python"
C:\Users\admin>type memo.txt #'type ~' -> 정상적으로 기입되었는지 확인
Life is too short
You need python
-메모 추가는 '-a' 옵션을 사용하고, 메모 출력은 '-v' 옵션을 사용한다
>>> import sys
option = sys.argv[1]
if option == '-a': #옵션이 '-a'인 경우에만
memo = sys.argv[2] #memo 값을 읽어 memo.txt 파일에 그 값을 써라
f = open('memo.txt', 'a') #메모에 새로운 내용이 '추가' 되어야 하므로 파일 열기 모드 'a'
f.write(memo)
f.write('\n') #메모를 추가할 때마다 다음 줄에 저장되도록
f.close()
elif option == '-v': #옵션으로 '-v'가 들어온 경우
f = open('memo.txt')
memo = f.read() #memo.txt 파일을 읽어서 출력
f.close()
print(memo)
-입력한 메모가 그대로 출력된다
C:\Users\admin>python memo.py -v
Life is too short
You need python