숫자 처리 함수
abs(int) #절대 값으로 반환
pow(num1, num2) # num1^num2
max()
min()
round() #반올림
math 라이브러리 사용
floor() #내림
ceil() #올림
sqrt(num) #num의 제곱근
랜덤함수
random 라이브러리 사용
random() #0,0~1,0 미만의 임의의 값 생성
random() * 10 # 0.0 ~ 10.0 미만의 임의의 값 생성
int(random()*10)# 0~ 10 미만의 임의의 값 생성
int(random()*10)+1 1~10 이하의 임의의 값 생성
randrange(1,46) # 1~46미만의 임의의 값 생성
randint(1,45) # 1~45이하의 임의의 값 생성
슬라이싱
string = "990120-1234567"
주민번호에서 성별을 알고싶을 때
string[7] # 1 남자인 것을 알 수 있다.
생년 정보
string[0:2] #99
생월 정보
string[2:4] #01
생일 정보
string[4:6]
생년 월일
string[:6] #990120 처음부터 6번째 까지
뒤 7자리
string[7:] #1234567 7번째 부터 끝까지
뒤 7자리(뒤에서부터)
string[-7:] #1234567 뒤 7번째 부터 끝까지
문자열 처리 함수
string = "Python is Amazing"
string.lower() #소문자로 바꿈
string.upper() #대문자로 바꿈
string[0].isupper() #인덱스 0번째가 대문자인지 판별
len(string) # 글자수 반환
string.replace("Python", "Java") #Java is Amazing 특정 문자열 변환
index = string.index("n") # 5 인덱스 5번에 "n"이 있다.
index = string.index("n", index+1) #15 첫번째 "n" 다음에 있는 "n"이 있는 위치는 15
string.find("n") #5
string.count("n") #2 string안에서 "n"라는 문자가 총 몇번 존재하는지 출력
find와 index의 차이점
find는 문자열에 존재 하지 않는 문자를 찾을 경우에 -1을 반환
index는 오류발생
문자열포멧
%d 정수
%s 정수, 문자열 가능
%c 문자
print("i'm %d" % 20) # d 는 정수
print("i like %s" % "python") # s 는 문자열,정수 모두 가능
print("Apple is started by %c." % "A") #c 는 한 글자(문자)
print("aaa %s sss %s" %("blue", "red"))
format()을 사용하기
print("aaa {}".format(20))
print("aaa {0} sss {1}".format("blue", "red"))
print("aaa {1} sss {0}".format("blue", "red"))
인덱스로 지정해주는 것이 가능하고
print("aaa {age}, sss{color}".format(age = 20, color = "red"))
print("aaa {color}, sss{age}".format(age = 20, color = "red"))
특정 변수명으로 정해주는 것도 가능
f를 문자열 앞에 붙혀주게 되면 실제 변수명을 이용해서 문자열포멧을 할 수 있다.
ge = 20
color = "red"
print(f"aaa {color}, sss{age}") #f를 앞에 적게되면 {}안에 실제 변수이름 을 적어주면 그것이 그대로 적용
list
append()
name = ["a", "b"]
name.append("c")
print(name)
list뒤에 새로운 원소 추가해준다.
insert()
name.insert(1,"d")
print(name)
원하는 인덱스 위치에 추가하고 싶은 원소를 추가할 수 있다.
pop()
print(name.pop()) #pop 제일 끝 index 삭제
print(name)
index가 뒤에 있는 순서대로 하나씩 삭제
extend()
num_list = [5,2,3,1,4]
num_list.extend(name) #두개의 list 합치기
print(num_list)
두개의 list를 합칠 수 있다.
dictionary
cabinet = {3:"a", 100:"b", 12:"c"}
print(cabinet[5]) #dic의 키값으로 value를 불러오는데
#존재하지 않는 키값이면 오류가 뜸
존재하지 않는 키값으로 dic을 불러올 경우에는 오류가 뜬다.
get()
print(cabinet.get(5)) #get을 사용하면 존재하지 않는 키값일 땐
#none을 출력해줌
get()을 사용하면 존재하지 않는 키 값을 때에는 none을 반환한다.
print(cabinet.get(5,"empty")) #none대신 원하는 메세지 정할 수 있음
none이 아니라 원하는 문자열을 삽입할 수 도 있다.
key in dic
print(3 in cabinet) # key in dic 하면 key값이 dic 안에 존재하는지
# 유무를 true , false 로 출력
key 값이 해당 dic안에 존재하면 true 없으면 false
del dic
del cabinet[3] #key 삭제
해당 key를 삭제하는 법
clear
cabinet.clear()
dic 전체 삭제
key()
print(cabinet.key())
dic 에서 key값만을 list로 반환
value()
(name, age, bobby) = ("a", "b", "c")
print(name, age, bobby)
print(cabinet.value())
valeu 값만을 list로 반환
items()
print(cabinet.items())
key값과 value 값을 같이 list로 반환해준다.
tuple
변하지 않을 값을 정해줄 때 사용한다.
menu = ("a", "b")
print(menu[0])
print(menu[1])
set (집합)
중복 안됨, 순서 없음
my_set = {1,2,3,3,3}
print(my_set) #{1,2,3}
중복이 안되기 때문에 , 출력값이 {1,2,3}인 것을 볼 수 있다
java = {"a","b","c"}
python = set(["a","d"])
교집합 (java 와 python 둘다 속한 원소 찾기)
#교집합 (java와 python 둘다 속한 원소)
print(java & python)
print(java.intersection(python)) #intersection & 와 같은 기능
결과 값은
{'a'} 만 나오게 된다.
#합집합 (java나 python 둘중에 하나에 속한 원소)
print(java | python)
print(java.union(python))
결과는 {'a', 'd', 'c', 'b'}
#차집합(java에는 있지만 python에는 없는 원소)
print(java - python)
print(java.difference(python))
결과는 {'c', 'b'}
add()
python.add("b")
print(python)
python에 "b"를 추가 하고 싶을 때
remove()
java.remove("c")
print(java)
java에서 "c"를 제거하고 싶을 때
method
profile() 함수는 파라미터 name, age, main_lang 총 3개지만, age와 main_lang는 default값을 줬기 때문에
매개변수가 없어도 default값으로 동작이 가능하다.
default 값이 아니라 다른 값이 넣고 싶으면 매개변수를 더 넣어주면 된다.
def profile(name, age=17, main_lang="python") :
print("name : {0}\t age : {1}\t main_lang : {2}" \
.format(name, age, main_lang))
profile("a", "2", "asd")
profile("b")
함수에서 전달받는 매개변수의 값을 키워드로 해서 함수를 호출해도
순서가 바껴 있어도, 함수 안에있는 순서대로 제대로 호출된다.
def profile(name, age, main_lang) :
print(name, age, main_lang)
profile(name="a", main_lang="b", age="5")
가변인자
매개변수가 몇 개가 들어올지를 정할 수 없는 상황일때
def profile(name, age, lang1, lang2, lang3, lang4) :
print("name : {0}\t age : {1}\t".format(name,age), end=" ")
print(lang1, lang2, lang3, lang4)
print("a", 20, "python", "java", "php", "mysql")
print("b", 25, "python", "java", "","")
아래의 print문을 보면 빈 lang는 ""로 채워야하기 때문에 불편하다.
def profile(name, age, *language) :
print("name : {0}\t age : {1}\t".format(name,age), end=" ")
for lang in language :
print(lang, end=" ")
print()
profile("a", 20, "python", "java", "php", "mysql")
profile("b", 25, "python", "java", "","")
이 처럼 language 앞에 *을 붙여줌으로 써 가변인자로써 정해지지 않은 여러개의 매개변수를 받을 수 있다.
지역변수(local) 와 전역변수(global)
gun = 10
def checkpoint(soldiers) :
gun = 20 #gun 을 다시 설정안하면 오류가 뜬다.
gun = gun - soldiers
print(" 함수 내 남은 총 : {0}".format(gun))
print("전체 총 : {0}".format(gun))
checkpoint(2)
print("남은 총 : {0}".format(gun))
def내 에서는 밖에 있는 변수 gun 을 사용할 수 없다.
def 안에서 다시 재설정 해줘야 그 때부터 gun 변수 사용 가능
def 안에서 gun - soldiers를 했지만, print로 gun을 출력을 하면
gun은 그대로 10이 남아 있게 된다.
gun = 10
def checkpoint(soldiers) :
global gun # 전역 공간에 있는 gun 사용
gun = gun - soldiers
print(" 함수 내 남은 총 : {0}".format(gun))
print("전체 총 : {0}".format(gun))
checkpoint(2)
print("남은 총 : {0}".format(gun))
method 안에서 밖에 gun이라는 변수를 쓰기위해서는 global을 변수앞에 붙혀주면 쓸수있다.
하지만, 전역변수를 많이쓰면 코드관리가 어려워 진다. 권장 x
파라미터로 전달해서 ruturn 받는 형식으로 많이 한다.
def checkpoint_ret(gun, soldiers) :
gun = gun - soldiers
print(" 함수 내 남은 총 : {0}".format(gun))
return gun
checkpoint_ret(10, 2)
표준입출력
print("python", "java")
print("python" + "java")
, 로 두 변수를 구분하면 띄어쓰기가 되고
+로 두변수를 구분하면 붙혀서 출력해준다.
sep
print("python", "java", "js", sep=" vs ")
dsep = 구분되는 두 문자열 사이에 특정 문자열을 삽입할 때 사용
결과 값은 "python vs java" 가 된다
end
print("python", "java", "js", end=" ? ")
end느 print는 원래 마지막에 줄바꿈이 자동적으로 되지만
end를 사용하면 줄바꿈 대신의 문자열을 추가해줄 수 있음 => 줄바꿈이 일어나지 않음
stdout/ stderr
import sys
print("python", "java", file=sys.stdout)
print("python", "java", file=sys.stderr)
stdout는 표준 출력으로 문장이 찍힌다
stderr는 표준 에로로 처리
stderr는 에러를 확인해서 수정해야할 때
ljust() / rjust()
scores = {"a" : 0, "b" :50, "c" : 100}
for subject, score in scores.items():
print(subject.ljust(8), str(score).rjust(4), sep =":")
결과 값
a : 0
b : 50
c : 100
ljust(int)는 int만큼의 자리수만큼 왼쪽으로 정렬
rjust((int)는 int만큼의 자리수만큼 오른쪽으로 정렬
zfill()
for num in range(20):
print("대기번호 : " + str(num).zfill(3))zfill()
zfill(a) a자리수 만큼 0으로 빈자리를 채운다.
출력포멧
print("{0: >10}".format(500))
결과
500
빈 자리는 빈공간으로, 오른쪽 정렬 하되 총 10자리 공간 확보
print("{0: >+10}".format(500))
print("{0: >+10}".format(-500))
결과
+500
-500
양수일 땐 +로 표시, 음수일 때 -로 표시
+가 없어도 -는 표시 되지만 +는 표시가 안됨
print("{0:_<10}".format(500))
결과
500_______
#왼쪽 정렬후 , 빈칸은 _로 채움
print("{0:,}".format(100000000000))
결과
100,000,000,000
3자리 마다 콤마를 찍어주기
print("{0:^<+30,}".format(1000000000000))
결과
+1,000,000,000,000^^^^^^^^^^^^
#3자리 마다 콤마, +-부호, 자릿 수 확보
# 빈자리는 ^로 채우기
print("{0:f}".format(5/3))
결과
1.666667
소수점 출력
print("{0:.2f}".format(5/3))
결과
1.67
특정 자리수 만큼 소수점 출력( 소수점 3째 자리에서 반올림)
file
"r" 는 파일을 읽을 때 사용
"w" 는 파일을 쓸때 사용
"a" 는 기존 파일에 내용을 이어서 쓰고 싶을경우 사용 (w는 덮어쓰기가 된다)
score_file = open("score.txt1", "w", encoding="utf8")
print("a : 0", file = score_file)
print("b : 50", file = score_file)
score_file.close()
l위 코딩은 새로운 파일(score.txt1)을 생성하고 그 안에는 "a : 0" 이라는 내용을 적는 것
score_file = open("score.txt", "a", encoding="utf8")
score_file.write("c : 80")
score_file.write("\nd : 100")
scroe_file.close()
ㅇ위 파일은 기존의 score.txt파일안에 내용을 추가하는 코딩
score_file = open("score.txt", "r", encoding="utf8")
print(score_file.read())
score_file.close()
score_file.read() 은 파일에 있는 모든 내용을 다 읽어올 때 사용
한줄한줄 불러오고 싶은 경우에는
score_file.readline() 를 사용한다
몇 줄인지 모를 경우 한글한글 가져올 때 응용법
score_file = open("score.txt", "r", encoding="utf8")
while True :
line = score_file.readline()
if not line :
break
print(line)
score_file.close()
list 형식으로 글을 저장하는 경우
score_file = open("score.txt", "r", encoding="utf8")
lines = score_file.readlines() #list형태로 저장
for line in lines :
print(line, end="")
score_file.close()
pickle
pickle 프로그램 상에서 사용하는 데이터를 파일형식으로 저장하는 것, pickle을 통해서 데이터를 가져와서
코딩에서 사용할 수 있다.
import pickle
profile_file = open("profile.pickle", "wb")
profile = {"name": "박명수", "age": 10, "hobby": ["축구", "골프", "코딩"]}
print(profile)
pickle.dump(profile, profile_file) # profile에 있는 정보를 file에 저장
profile_file.close()
w 쓰기 목적 b는 바이너리를 의미 pickle을 쓰기위해서 항상 바이너리타입을 정의해야 한다.
위 코드를 실행하면 pickle 형식의 파일이 하나 생성되게 된다.
그러면 그 파일에있는 데이터를 가져와서 쓰고싶은 경우에는?
profile_file = open("profile.pickle", "rb")
profile = pickle.load(profile_file) # file에 있는 정보를 profile에 불러오기
print(profile)
profile_file.close()
"rb" 를 이용해서 파일을 불러오고
load()를 통해서 file에 있는 정보를 profile이라는 변수에 가져와서 사용할 수 있게 된다.
class
tank_name = "탱크"
tank_hp = 150
tank_damage = 35
print("{0} 유닛이 생성되었습니다.".format(tank_name))
print("체력 {0}, 공격력 {1}\n".format(tank_hp, tank_damage))
tank2_name = "탱크"
tank2_hp = 150
tank2_damage = 35
print("{0} 유닛이 생성되었습니다.".format(tank2_name))
print("체력 {0}, 공격력 {1}\n".format(tank2_hp, tank2_damage))
스타크레프트에서 탱크 유닛을 뽑는다고 했을 경우, 아래의 코딩은 유닛마다 새롭게 지정해줘야하는 번거로움이 있다.
class기능을 사용하면 붕어빵틀처럼, 재료를 넣어주면 계속 원하는 모양으로 붕어빵을 찍어내듯이 코딩도 가능하다.
class Unit:
# init는 생성자로써, 객체가 만들어질 때 자동으로 생성
def __init__(self, name, hp, speed):
self.name = name
self.hp = hp
self.speed = speed
__init__는 생성자로써, 객체가 만들어질 때 자동으로 생성되는 것. 초기화
상속
일반유닛이 있고 공격유닛이 존재한다. 공격유닛은 일반유닛 + 공격기능이 추가
그러면 새로운 공격 class를 만들어야 하는데, 일반 유닛에 필요한 기능을 그대로 유지한채 추가하고 싶을 때 사용
class AttackUnit(Unit):
def __init__(self, name, hp, speed, damage):
Unit.__init__(self, name, hp, speed)
self.damage = damage
def attack(self, location):
print("{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}]"
.format(self.name, location, self.damage))
def damaged(self, damage):
print("{0} : {1} 데미지를 입었습니다".format(self.name, damage))
self.hp -= damage
print("{0} : 현재 체력은 {1} 입니다.".format(self.name, self.hp))
if self.hp <= 0:
print("{0} : 파괴되었습니다.".format(self.name))
class 명 옆에 (상속 받을 class)로 상속을 받는다
Unit.__init__(self, name, hp, speed) -> class명.__inif__() 하게되면 상속 class에 있는 생성자를 그대로 가져올 수 가 있다.
다중상속
스타크레프트에서 레이스라는 유닛은 공중유닛 이면서 공격이 가능한 유닛이다.
그러면 FlyableAttackUnit라는 class를 만들고 공중유닛class, 공격 class를 두개를 상속받아야한다.
그 때 사용하는 것이 다중상속
공중유닛 class
class Flyable:
def __init__(self, flying_speed):
self.flying_speed = flying_speed
def fly(self, name, location):
print("{0} : {1} 방향으로 날아갑니다. [속도 {2} ]"
.format(name, location, self.flying_speed))
공중 공격유닛 class
class FlyableAttackUnit(AttackUnit, Flyable):
def __init__(self, name, hp, damage, flying_speed):
AttackUnit.__init__(self, name, hp, 0, damage) # 지상 speed 0
Flyable.__init__(self, flying_speed)
def move(self, location):
print("[공중 유닛 이동]")
self.fly(self.name, location
AttackUnit.__init__(self, name, hp, 0, damage) # 지상 speed 0
Flyable.__init__(self, flying_speed)
로 상속한 class의 기능을 사용할 수 있다.
외부에서 변수 확장이 가능하다
wraith2 = AttackUnit("빼앗은 레이스", 80, 5)
wraith2.clocking = True
if wraith2.clocking == True:
print("{0} 는 현재 클로킹 상태입니다.".format(wraith2.name))
wraith2라는 변수에 새로운 객체를 생성하는데, clocking 이라는 변수를 만들고 싶은 경우에
wraith2.cloking = 라고 지정을 해주게되면 변수를 확장시킬 수 있다.
이러한 경우에는 wraith2 라는 해당 객체에서만 사용할 수 있게 되는 변수가 된다.
다른 wraith1에서는 clocking이라는 변수 사용 불가능
module
theater_module.py을 하나 생성, 비슷한 함수들을 모아놓는다.
# 일반 가격
def price(people):
print("{0}명 가격은 {1}원 입니다.".format(people, people*10000))
# 조조 할인 가격
def price_mornig(people):
print("{0}명 가격은 {1}원 입니다.".format(people, people*6000))
# 군인할인가격
def price_soldier(people):
print("{0}명 가격은 {1}원 입니다.".format(people, people*4000))
theater_module.py에 있는 함수를 쓰고 싶을 경우
import theater_module
theater_module.price(3) # 3명이서 영화 보러 갔을 때 가격
theater_module.price_mornig(4)
theater_module.price_soldier(5)
as 약어
import theater_module as mv # theater_module가 이름이 너무 기니까 mv라고 지정해주는 것
mv.price(3)
mv.price_mornig(4)
mv.price_soldier(5)
import를 하게 되면, theater_module의 긴 이름을 계속 붙혀줘야 하기 때문에, 간단히 약어로 사용할 수 있는 기능이
as다.
약어조차도 안붙히는 법
#원하는 함수만 쓰도록 지정해줄 수 있다.
from theater_module import price, price_mornig
price(3)
price_mornig(4)
price_soldier(5)
form (모듈) import (사용하고 싶은 함수) 를 하게되면 모듈이름을 쓰지않아도 바로 함수이름으로 사용이 가능하다.
# theater_module을 붙히지 않고 그 안에 모든 라이브러리를 사용하겠다.
from theater_module import *
price(3)
price_mornig(4)
price_soldier(5)
여기서 " * "는 전체를 가르킨다.
즉 theater_module에 있는 모든 함수를 사용하겠다는 뜻
# 가져올 함수를 또 as로 이름을 지정해줄 수 도 있다.
from theater_module import price_soldier as price
price(3) # 여기서 prcie 는 theater_module에 있는 price가 아닌 price_soldier다
물론 함수명도 " as "를 통해서 약어로 사용할 수 있다.
pakage
travel이라는 폴더안에 ["vietnam.py", "tailand.py", "__init__.py"] 존재
vietnam.py 파일
class VietnamPackage:
def detail(self):
print("[태국 패키지 3박 5일] 다낭 효도 여행 60만원")
thailand.py 파일
class ThailandPackage:
def detail(self):
print("[태국 패키지 3박 5일] 방콕, 파타야 여행 (아시아 투어) 50만원")
__init__.py 파일
__all__ = ["vietnam", "thailand"]
travel폴더 안에 thailand.py파일 안에 ThilandPackage() class를 사용하고 싶다.
import travel.thailand
trip_to = travel.thailand.ThailandPackage()
trip_to.detail()
import로 thailand.py를 바로 지정
from travel import thailand
trip_to = thailand.ThailandPackage()
trip_to.detail()
import로 직접 ThailandPackage() class를 불러올 때
from travel.thailand import ThailandPackage
trip_to = ThailandPackage()
trip_to.detail()
travel 폴더안에 모든 파일을 사용하고 싶다.
우선 __init__.py 파일에
__all__ = ["vietnam", "thailand"]
__all__ = [사용가능한 파일명] 을 적어주게 되면 import * 로 list안에 있는 파일명을 자유롭게 쓸수있음
from travel import *
trip_to1 = vietnam.VietnamPackage()
trip_to2 = thailand.ThailandPackage()
trip_to1.detail()
trip_to2.detail()
pip package
위에 사이트에가보면, 사람들이 많들어 놓은 검증되어있는 많은 package들이 존재한다.
거기서 원하는 pakage를 다운받아서 사용하면된다.
위와같이 다운로드할 수 있는 코드가 있다. 이것을 파이썬 커맨드창에 입력하면 다운을 받을 수 있다.
pip 명령어
pip설치확인
pip --version
패키지 설치
pip install <package name>
설치된 패키지 업데이트
pip install --upgrade <package name>
패키지 삭제
# pip uninstall <package name>
설치된 패키지 목록
pip show --files <package name>
pip 는 command line 프로그램이다. pip 도 python code 이기 때문에, import pip 등을 통해서 사용이 가능하지만, python에서는 pip를 이런 방식으로 사용하는 것을 지원하지 않는다.
그 첫번째 이유는, pip 는 전역 상태에 대한 단독 제어를 가정하고 프로그래밍 되어있기 때문에, 사용자 코드가 그에 영향을 줄 것을 고려하지 않고, 시스템 로깅 설정이나, stream IO등을 관리하도록 되어 있기 때문이다.
둘째는 thread-safe 하지 않다. pip를 thread 에서 실행하게 되면 pip 나 사용자의 코드가 정상적으로 동작할 것이라는 보장을 할 수가 없다.
세째, pip 는 일단 한번 작업이 끝나면 프로세스를 빠져나오는 것(terminate process)을 가정으로 하고 있다. 따라서 그 시점에 다른 코드가 계속 실행되고 있을 가능성에 대한 처리를 고려하고 있지 않다. 따라서 pip 를 여러 번 호출하는 것은 이슈를 발생시킨다.
따라서 pip 는 python의 패키지가 아니라 독립적인 command line tool로 생각하고 실행하는 것이 좋다.
출처: https://pinocc.tistory.com/198 [땅뚱 창고]
내장함수
ist of python builtinsl를 구글에 검색하면 내장함수를 볼 수있는 사이트가 있음
docs.python.org/3/library/functions.html
dir
어떤 객체를 넘겨줬을 때 그 객체가 어떤 변수와 함수를 가지고 있는지 표시
import random # 외장 함수
print(dir(random))
결과값
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
list에서 사용가능한 변수와 함수를 보고싶을 때
lst = [1, 2, 3]
print(dir(lst))
결과값
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__',
'__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
string에서 사용가능한 변수와 함수를 보고싶을 때
name = "jong"
print(dir(name))
결과값
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
input()
사용자 입력을 받는 함수
languge = input("무슨 언어를 좋아하세요?")
print("{0}은 아주 좋은 언어입니다.".format(languge))
외장함수
list of python modules로 검색하면 외장함수를 볼 수 있는 사이트
docs.python.org/3/py-modindex.html
glob
경로 내의 폴더 / 파일 목록 조회 (윈도우 dir)
import glob
print(glob.glob("*.py")) # .py로 끝나는 모든 파일에 대해
os
운영체제에서 제공하는 기본 기능
os.getcwd()
현재 디렉토리를 표시할 때
import os
print(os.getcwd()) # 현재 디렉토리 표시
os.path.exists(폴더명)
해당 폴더명이 존재하는지 안하는지 체크
if os.path.exists(folder):
print("이미 존재하는 폴더입니다. ")
os.rmdir(folder)
print(folder, "폴더를 삭제하였습니다. ")
else:
os.makedirs(folder) # 폴더 생성
print(folder, "폴더를 생성하였습니다. ")
if os.path.exists(폴더명)로 체크한다음에
폴더가 있을 경우
os.rmdir(폴더명)을 이용해서 폴더 삭제
폴더가 없을 경우
os.makedirs(폴더명)을 이용해서 폴더 생성
os.listdir()
현재 워크스페이스에서 존재하는 파일이나 폴더명 출력
print(os.listdir())
time
import time
print(time.localtime())
print(time.strftime("%Y-%m-%d %H:%M:%S"))
%Y : 년
%m: 월
%d : 일
%H :시간
%M :분
%S : 초
결과값
2020-12-10 14:10:25
datetime
import datetime
print("오늘 날짜는 ", datetime.date.today())
결과값
오늘 날짜는 2020-12-10
timedelta()
두 날짜 사이의 간격을 정할 수 있다.
# timedelta : 두 날짜 사이의 간격
today = datetime.date.today()
td = datetime.timedelta(days=100) # 100일 저장
print("우리가 만난지 100일은", today + td)
today에는 오늘의 날짜를 저장해놓고, datetime.timedelta(day=int)를 이용해서 int날짜 만큼 뒤에 날짜를 설정해줌
결과값
우리가 만난지 100일은 2021-03-20
zip
zip을 이용해서 list를 합칠 수도, 나눌수도 있다.
서로 다른 두 개의 list를 합치기
lst1 = ["a", "b", "c"]
lst2 = [1, 2, 3]
lst3 = list(zip(lst1, lst2))
print(lst3)
zip(list1,list2)
결과
[('a', 1), ('b', 2), ('c', 3)]
2중배열 형태를 따로 나눠서 저장
maxed = [("a", 1), ("b", 2), ("c", 3)]
string, num = zip(*(maxed))
print(string, num)
zip(*(list))
결과
('a', 'b', 'c') (1, 2, 3)
참고자료 <youtube : 나도코딩>
www.youtube.com/watch?v=kWiCuklohdY&t=12932s&ab_channel=%EB%82%98%EB%8F%84%EC%BD%94%EB%94%A9
'IT 공부 > python' 카테고리의 다른 글
[ python ] Tkinter project (0) | 2020.12.11 |
---|---|
[ python ] 프로젝트 starcraft 개인공부 (0) | 2020.12.09 |
[ python ] 예외 처리 raise (0) | 2020.11.29 |
[ python ] format() 사용법 (0) | 2020.11.20 |
[ python ] random 모듈 사용해서 난수 만들기 (0) | 2020.11.20 |