강의 참고:https://www.youtube.com/watch?v=T6z-0dpXPvU (나도코딩님 파이썬 무료강의 100분 완성 영상)
--------------------
[폴더 구조]
|--practice.py
|--goodjob.py
ㄴbye
|--goodbye.py
ㄴgoodnight.py
--------------------
practice.py
#자료형
print('hello')
print(1234)
print(3.14)
print(True)
#변수
my_name = 'a'
Name = 'b'
NAME = 'c'
print(my_name)
print(Name)
print(NAME)
#형 변환
int_num = int('2')
flaot_num = float('4.321')
str_num = str(2)
float_to_int = int(flaot_num)
print(int_num)
print(flaot_num)
print(str_num)
print(float_to_int)
#연산자
num = 1
num += 2
num **= 2
print('num ::',num)
print('num > 5 and num < 10 ::', num > 5 and num < 10)
print('not num > 5 ::',not num > 5)
print('\'c\' in \'cat\' ::','c' in 'cat')
print('\'c\' not in \'cat\' ::','c' not in 'cat')
#불리안
print('bool(\'a\') ::', bool('a'))
print('bool(\'\') ::', bool(''))
print('bool(-1) ::', bool(-1))
print('bool(0) ::',bool(0))
print('bool(None) ::', bool(None))
'''여러 줄
주석'''
#인덱스
python = 'python'
print('python[0] ::', python[0])
print('python[-1] ::', python[-1])
#슬라이싱
print('python[1:6] ::', python[1:6])
print('python[1:] ::', python[1:])
print('python[:-1] ::', python[:-1])
print('python[:] ::', python[:])
#문자열처리
snack = '꿀꽈배기'
two = '2개'
juseyo = snack + two
juseyo += '주세요'
print('juseyo :: ', juseyo)
print('len(juseyo) :: ', len(juseyo))
#메소드
letter = 'how are YOU?'
print('letter.lower()) ::', letter.lower())
print('letter.upper()) ::', letter.upper())
#문장의 첫글자만 대문자 나머지 소문자
print('letter.capitalize() ::', letter.capitalize())
#단어들의 첫글자만 대문자
print('letter.title() ::', letter.title())
#대소문자 변환
print('letter.swapcase() ::', letter.swapcase())
#띄어쓰기 기준으로 리스트 리턴
print('letter.split()', letter.split())
print('letter.count(\'how\') ::', letter.count('how'))
s = '나도...고등학교...'
#시작/끝 단어 확인 boolean 리턴
print('s.startswith(\'나도\') ::', s.startswith('나도'))
print('s.endswith(\'나도\') ::', s.endswith('나도'))
#앞 뒤로 불필요 문자열(또는 공백) 제거
print('s.strip(\'.\') ::', s.strip('.'))
print('s.replace(\'고등학교\', \'고교\') ::', s.replace('고등학교', '고교'))
print('s.find(\'학교\') ::',s.find('학교'))
#문자를 사이에 두고 감쌈
print('s.center(15,\'-\') ::',s.center(15,'-'))
#문자열 포맷
python = '파이썬'
java = '자바'
print('개발 언어에는 {}, {} 등이 있어요'.format(python, java))
print('개발 언어에는 {1}, {0} 등이 있어요'.format(python, java))
# f-string 파이썬 3.6 이상 (문자열 앞에 f를 붙이면 {}안에 바로 변수 삽입 가능)
print(f'개발 언어에는 {python}, {java} 등이 있어요')
#줄바꿈
snack = '꿀꽈배기는\n너무\n맛있어요.'
print(snack)
#리스트(중복허용, 순서있음)
my_list = ['초코파이', '초코파이', 3.14, 0 , '', '기타', None]
my_list2 = [0,1,5,44,8]
print(my_list)
print(len(my_list))
my_list[1] ='몽쉘카카오'
print(my_list)
my_list.append('빅파이')
print(my_list)
my_list.remove('기타')
print(my_list)
your_list = ['사탕', '초콜릿']
my_list.extend(your_list)
print(my_list)
#원하는 위치에 값 추가
my_list.insert(0, '오뜨')
print('my_list.insert(0, \'오뜨\') ::',my_list)
#원하는 위치(또는 마지막)의 값 삭제
my_list.pop()
print('my_list.pop() ::', my_list)
my_list2.sort()
print('my_list2.sort() :: ', my_list2)
#순서 뒤집기
my_list.reverse()
print('my_list.reverse() :: ',my_list)
#리스트 복사
a_list = my_list.copy()
print('a_list = my_list.copy() ::', a_list)
print('my_list.count(\'오뜨\') ::',my_list.count('오뜨'))
#어떤 값이 어디에 있는지
print('my_list.index(\'오뜨\') ::',my_list.index('오뜨'))
#모든 값 삭제
my_list.clear()
print('my_list.clear() ::',my_list)
#튜플(수정이 불가능한 읽기 전용 리스트, 순서 보장, 중복 허용)
my_tuple = ('오예스', 0 , 3.14) #패킹
(tu1,tu2,tu3) = my_tuple #언패킹
print('my_tuple[0] ::',my_tuple[0])
print('my_tuple[1:] ::', my_tuple[1:])
print('len(my_tuple ::)',len(my_tuple))
print('tu1, tu2, tu3 ::',tu1, tu2, tu3)
numbers = (1,2,3,4,5,6,7,8,9,10)
(one, *others, ten) = numbers
print('others ::',others) #언패킹된 ohters는 리스트
#세트(순서 X->인덱스 접근 X, 중복 X)
A = {'돈가스','보쌈','제육덮밥'}
B = {'초밥','짬뽕','제육덮밥'}
print('A.intersection(B) ::',A.intersection(B))
print('A.union(B) ::',A.union(B))
print('A.difference(B) ::',A.difference(B))
A.add('닭갈비')
print('A.add(\'닭갈비\') ::', A)
#값 삭제(해당 값이 없으면 에러 발생)
A.remove('닭갈비')
print('A.remove(\'닭갈비\') ::', A)
#값 삭제(해당 값이 없어도 에러 발생 X)
A.discard('돈가스')
print('A.discard(\'돈가스\') ::',A)
#다른 세트의 값들을 더함
A.update(B)
print('A.update(B) ::',A)
#세트 A 초기화
A.clear()
print('A.clear() ::', A)
#세트 A 삭제
del A
#print('del A ::', A #NameError: name 'A' is not defined
#딕셔너리({key:value, key:value})
person = {
'이름' : '내이름',
'나이' : 7,
'키' : 120.55,
'몸무게' : 23
}
print('person ::', person)
print('person[\'이름\'] ::',person['이름'])
# get으로 없는 키에 접근 시 None
print('person.get(\'별명\') ::', person.get('별명'))
person['최종학력'] = '유치원'
print('person ::', person)
person['키'] = 125.55
print('person ::', person)
person.update({'키':133.5, '몸무게':33})
print('person update ::', person)
person.pop('최종학력')
print('person pop ::', person)
print('person.keys() ::', person.keys())
print('person.values() ::', person.values())
print('person.items() ::', person.items())
#자료형 비교
'''
리스트 튜플 세트 딕셔너리
선언 [] () {} {k:v}
순서보장 0 0 X 0(3.7이상)
중복허용 0 0 X X(key)
접근 list[idx] t[idx] X d[key] / d.get(key)
수정 0 X X 0(val)
추가 append() X add() d[key]=val / update()
insert() update()
extend()
삭제 remove() X remove() pop()
pop() discard() popitem()
clear() pop() clear()
clear()
'''
#튜플 <-> 리스트
a_tuple = ('오예스', '몽쉘')
print('a_tuple ::',a_tuple)
a_list = list(a_tuple)
a_list.append('오예스')
a_tuple = tuple(a_list)
print('a_tuple ::',a_tuple)
#리스트 <-> 세트 (순서 변경됨)
a_set = set(a_list)
print('a_set ::', a_set)
a_list = list(a_set)
print('a_list ::', a_list)
#리스트 <-> 딕셔너리 (순서 보장)
a_list = list(a_tuple)
print('a_list ::', a_list)
a_dic = dict.fromkeys(a_list)
print('a_dic :: ',a_dic)
a_list = list(a_dic)
print('a_list ::', a_list)
#if 조건문
today = 'sat'
if today == 'sun':
print('play')
elif today == 'sat':
print('run')
else:
print('study')
#for 반복문
for i in range(5):
print(f'반복 {i}회')
for i in range(2,6,2):
print(f'2에서 6까지 2만큼 뛰어서 반복, i={i}')
for k,v in person.items():
print(k,v)
#while 반복문
max = 25
weight = 0
item = 3
count = 0
while weight + item <= max:
weight+=item
count += 1
print(f'물건은 {count}개, 총 무게는 {weight} 입니다.')
#break, continue 문
drama = ['시즌1', '시즌2', '시즌3', '시즌4']
for x in drama:
if x =='시즌2':
continue
if x == '시즌4':
break
print(f'{x} 시청')
#리스트 Comprehension(기존 리스트를 가지고 새로운 리스트를 생성)
products = ['JOA-2020','JOA-2021','SIRO-2020', 'SIRO-2021']
#products에서 SIRO로 시작하는 값으로 recall 리스트 초기화
recall = [p for p in products if p.startswith('SIRO')]
print('recall ::',recall)
#모델명 뒤에 SE(special edition)를 붙여줘
prod_se = [p+'SE' for p in products]
print('prod_se ::', prod_se)
#함수
def show_price(name='Sam',price=10000):
print(f'안녕, {name}. 가격은 {price}원 입니다.')
show_price(name='Mike')
#가변인자
def visit(today, *customers):
print(f'{today} 방문자 : {customers}')
visit('2022-02-02', 'Mike','Sam','Jhon')
#입력 함수
#num = input('총 몇 분이세요? 숫자만 입력하세요. :')
#print(f'{num}명 입니다.')
#파일 입출력
#쓰기모드로 파일 열기
f=open('list.txt','w',encoding='utf8')
f.write('가나다\n라마바\n')
f.close()
#읽기모드로 파일 열기
f=open('list.txt','r',encoding='utf8')
contents = f.read()
print('contents ::',contents)
#한 줄씩 읽기
for line in contents:
#end는 불필요한 띄어쓰기를 방지하기 위해 사용
print(line, end='')
f.close()
#with 구문으로 close 대체
with open('list.txt','r',encoding='utf8') as f:
print(f.read())
#클래스
class BlackBox:
#pass는 구현하기 위한 부분(뼈대), 에러 X
pass
#인스턴스 생성
b = BlackBox()
b.name = '까망이'
print('b.name ::', b.name)
#b가 BlackBox의 인스턴스가 맞는지 확인(return boolean)
print('isinstance(b,BlackBox) ::',isinstance(b,BlackBox))
#__init__ (객체가 생성될때 자동으로 실행)
class BlackBox1:
#self(객체 자기 자신, 처음 전달값은 반드시 self, 메소드 내에서는 self.name과 같이 멤버변수로 사용)
def __init__(self,name,price):
self.name = name
self.price = price
def set_travel_mode(self,min):
print(f'{self.name}는(은) {min}분 동안 여행 모드 on')
b1= BlackBox1('하양이', 100)
b2= BlackBox1('노랑이', 200)
print('b1.name ::',b1.name,', b2.name ::',b2.name)
#멤버변수
#b1 객체에만 멤버변수 추가
b1.nickname = '1호'
print('b1.nickname ::',b1.nickname)
b1.set_travel_mode(20)
#상속
class BlackBox2:
def __init__(self,name,price):
self.name = name
self.price = price
class TravelBlackBox(BlackBox2):
def __init__(self, name, price,sd):
#부모클래스의 __init__을 가져옴
super().__init__(name, price)
self.sd=sd
def set_travel_mode(self,min):
print(f'{self.name}는(은) {min}분 동안 여행 모드 on')
b3 = BlackBox2('파랑이', 300)
b4 = TravelBlackBox('주황이',400,64)
b4.set_travel_mode(40)
#다중상속
class VideoMaker:
def make(self):
print('추억용 여행 영상 제작')
class MailSender:
def send(self):
print('메일발송')
class TravelBlackBox2(BlackBox2,VideoMaker,MailSender):
def __init__(self, name, price,sd):
#부모클래스의 __init__을 가져옴
super().__init__(name, price)
self.sd=sd
def set_travel_mode(self,min):
print(f'{self.name}는(은) {min}분 동안 여행 모드 on')
b5=TravelBlackBox2('초록이',500,128)
b5.make()
b5.send()
#메소드 오버라이딩
class AdvancedTravelBlackBox(TravelBlackBox2):
def set_travel_mode(self, min):
print(f'{self.name}는(은) {min}분 동안 여행 모드 on')
#자식클래스에서 부모클래스의 메소드를 재정의시 오버라이딩됨
self.make()
self.send()
b6=AdvancedTravelBlackBox('남색이',600,126)
b6.set_travel_mode(20)
#예외처리
try:
result = 1 / '0'
print(f'연산 결과 :: {result}')
except ZeroDivisionError:
print('0으로 나눌 수 없음')
except TypeError:
print('값이 이상함')
except Exception as err:
print('에러 :', err)
else:
print('정상동작')
finally:
print('수행종료')
#모듈(.py 파일)
#모듈 전체를 가져옴
import goodjob
goodjob.say()
#모듈 중 필요한 부분만 가져옴
from goodjob import say
say()
import random
my_list =['가위','바위','보']
print('random.choice(my_list) :: ',random.choice(my_list))
#패키지(폴더)
import bye.goodbye
bye.goodbye.bye()
from bye import goodbye, goodnight
goodbye.bye()
goodnight.night()
goodjob.py
def say():
print('참 잘했어요.')
goodbye.py
def bye():
print('또 만나요.')
goodnight.py
def night():
print('잘자요.')
'Python' 카테고리의 다른 글
[Django] Django란? (0) | 2024.08.12 |
---|