class_1
In [1]:
balance=8000
def deposit(money):
        global balance #global 전역변수 
        balance +=money

def inquire():
    print("잔액은 {}원 입니다.".format(balance))

deposit(1000) #예금 
inquire() #잔액확인 
잔액은 9000원 입니다.
In [14]:
class Account:
    def __init__(self, balance):
        self.balance=balance
    def deposit(self, money):
        self.balance +=money
    def inquire(self):
        print("잔액은 {}원 입니다.".format(self.balance))
In [12]:
kb=Account(80000)
kb.deposit(10000)
kb.inquire()
잔액은 90000원 입니다.
In [13]:
kakao=Account(100000)
kakao.deposit(200000)
kakao.inquire()
잔액은 300000원 입니다.
In [8]:
class Human:
    def __init__(self, name, age):
        self.age=age
        self.name=name 
    def intro(self): 
        print(str(self.age)+"살 "+self.name+"입니다.")
In [9]:
class Student(Human): #부모 클래스가 Human을 상속받은 클래스 
    def __init__(self, name, age, student_id):
        super().__init__(name,age)
        self.student_id=student_id
    def intro(self):
        super().intro() 
        print("학번 : "+str(self.student_id))
    def study(self):
        print("파이썬 공부: class")
In [10]:
#객체 생성 

kim = Human("홍길동", 37)
kim.intro()
37살 홍길동입니다.
In [11]:
oh=Student("김영희", 31, 2020009)
oh.intro()
oh.study()
31살 김영희입니다.
학번 : 2020009
파이썬 공부: class
In [232]:
class Date:
    def __init__(self, month):
        self.month=month    
    def getmonth(self):
        return self.month
    def setmonth(self, month):
        if 1<=month <=12:
            self.month=month
In [233]:
today= Date(9)
today.setmonth(19)
print(today.getmonth())
9
In [234]:
today= Date(9)
today.month=15
print(today.month)
15
In [245]:
class Date: # __는 직접 참조가 불가능하다 
    def __init__(self, month):
        self.inner_month= month    
    def getmonth(self):
        return self.inner_month
    def setmonth(self, month):
        if 1<=month<=12:
            self.inner_month=month
    month=property(getmonth, setmonth) #property: 외부에서 클래스 내부 변수를 참조하기 위한 함수 
In [246]:
today=Date(9)
today.month=15
print(today.month)
9
In [247]:
today=Date(9)
today.inner_month=15
print(today.month)
15
In [113]:
class Date:
    def __init__(self, month):
        self.__month=month    
    def getmonth(self):
        return self.__month
    def setmonth(self, month):
        if 1<=month <=12:
            self.__month=month
    month=property(getmonth, setmonth)
In [117]:
today=Date(9)
today.month=15
print(today.month)
9
In [115]:
today=Date(9)
today.inner_month=15
print(today.month)
9
In [56]:
class Car:
    count=0 
    def __init__(self, name):
        self.name= name
        Car.count +=1
    
    @classmethod
    def outcount(cls):
         print(cls.count)
In [60]:
k3= Car("K3")
k5= Car("K5")
Car.outcount()
2
In [142]:
#static method 
class Car:
    @staticmethod
    def hello():
        print("안전운전")
    count=0 
    def __init__(self, name):
        self.name= name
        Car.count +=1
    
    @classmethod
    def outcount(cls):
         print(cls.count)
In [143]:
Car.hello()
안전운전
In [7]:
#연산자 메서드 
class Human:
    def __init__(self, name, age):
        self.age= age
        self.name= name
    def __eq__(self, other):
        return self.age== other.age and self.name == other.name
In [9]:
kim= Human("짱구", 25)
ch=Human("짱구", 25)
lee= Human("철수", 26)

print( kim== ch)
print( kim== lee)
True
False
In [129]:
#특수 연산자 메서드
class Human:
    def __init__(self, name, age):
        self.age= age
        self.name= name
    def __str__(self): 
        return "이름{}, 나이{}". format(self.name, self.age)
    def __len__(self): 
        return self.age
In [10]:
kim=("짱구", 25)
print(kim)
print(len(kim))
('짱구', 25)
2
In [141]:
f=0.1 
sum=0
for i in range(100):
    sum+=f 
print(sum)
9.99999999999998
In [149]:
#오차없이 10진수형태의 실수를 표현하는 클래스: Decimal 
from decimal import Decimal
Decimal(123)            #정수형
Decimal('3.14')         #실수 문자열 
Decimal(('3.14e3'))     # 부동소수점 형태
Decimal((0,(3,1,4), -2)) #튜플형태 3.14
Out[149]:
Decimal('3.14')
In [150]:
from decimal import Decimal
f=Decimal('0.1') 
sum=0
for i in range(100):
    sum+=f 
print(sum)
10.0
In [152]:
from fractions import * 
a=Fraction(1,3)
print(a)
b=Fraction(8,14)
print(b)
1/3
4/7
In [153]:
from fractions import * 
a=Fraction(2,3)
b=Fraction(3,5)
c=a+b
print(c) #Fraction간 연산은 분수로 
19/15
In [154]:
d= c+0.1 #Fraction과 실수의 계산은 실수로 
print(d)
1.3666666666666667

array(타입코드, [초기값])

In [173]:
import array
ar = array.array('i', [33, 44, 55, 67, 89])

for a in ar: 
    print(a, end=",")
print()
ar.append(100)
del ar[0]
for a in ar: 
    print(a, end=",")
print()
print("ar[1]: ", ar[1])
print("ar[2:4]: ", ar[2:4])
33,44,55,67,89,
44,55,67,89,100,
ar[1]:  55
ar[2:4]:  array('i', [67, 89])
In [174]:
score=[88,95,70,100,59]
for no, s in enumerate(score, 1):
    print(str(no)+ "번 학생의 성적 :", s)
1번 학생의 성적 : 88
2번 학생의 성적 : 95
3번 학생의 성적 : 70
4번 학생의 성적 : 100
5번 학생의 성적 : 59

enumerate(score, n)
: n부터 시작하는 순서값과 요소값을 튜플로 생성 후 리턴
ex) (1, 88), (2,95), (3,70), (4,100), (5,59)

In [181]:
yoil=["월", "화", "수", "목", "금", "토", "일"]
food=["갈비탕", "순대국", "김밥", "삼겹살", "짜장면"]
menu= zip(yoil, food)
for y, f in menu:
    print("{}요일 메뉴: {}".format(y,f))
월요일 메뉴: 갈비탕
화요일 메뉴: 순대국
수요일 메뉴: 김밥
목요일 메뉴: 삼겹살
금요일 메뉴: 짜장면

zip(list1, list2,...)
: 여러 개의 컬렉션을 합쳐 하나로 만든다
: 두 리스트의 대응되는 요소끼리 짝을 지어 튜플 리스트를 생성
: 두 리스트의 길이가 달라도 짧은 쪽의 길이에 맞춤
("월", "갈비탕), ("화", "순대국), ("수" "김밥"), ("목", "삼겹살"), ("금", "짜장면")

In [182]:
dict(zip(yoil,food))
Out[182]:
{'월': '갈비탕', '화': '순대국', '수': '김밥', '목': '삼겹살', '금': '짜장면'}
In [188]:
#any / all 
adult= [True, True, True, True]
print("any:",any(adult)) #하나라도 True면 True
print("all:",all(adult)) #모두 True일 때 True

adult= [True, False, False, False]
print("any:",any(adult)) 
print("all:",all(adult)) 
any: True
all: True
any: True
all: False

filter[조건지정 함수, 대상 리스트]
: filter함수는 리스트의 요소 중 조건에 맞는 것만 골라낸다.

In [190]:
# filter
def flunk(s):
    return s<60 

score =[45,89,72,53,99]
for s in filter(flunk, score):
    print(s)
45
53

map[조건지정 함수, 대상 리스트]
: map함수는 모든 요소에 대해 변환함수를 호출하여 새 요소값으로 구성된 리스트 생성

In [192]:
def half(s):
    return s / 2 
score =[45,89,72,53,94]
for s in map(half, score):
    print(s, end=",")
22.5,44.5,36.0,26.5,47.0,
In [193]:
new_score= map(half, score)
for s in new_score:
    print(s, end=",")
22.5,44.5,36.0,26.5,47.0,
In [194]:
def total(s,b):
    return s+b 
score =[45,89,72,53,94]
bonus= [2,3,7,0,5]
for s in map(total, score, bonus):
    print(s, end=" ") 
47 92 79 53 99

람다(lamda) 함수

lamda 인수 : 식

In [196]:
lambda x:x+1
Out[196]:
<function __main__.<lambda>(x)>
In [201]:
#위의 lambda를 함수로 표현하면 
def increase(x):
    return x+1
In [198]:
def flunk(s):
    return s<60 

score =[45,89,72,53,99]
for s in filter(lambda x: x<60, score):
    print(s)
45
53
In [200]:
def half(s):
    return s / 2 
score =[45,89,72,53,94]
for s in map(lambda x: x /2, score):
    print(s, end=",")
22.5,44.5,36.0,26.5,47.0,

깊은 복사와 얕은 복사

In [205]:
a=3 
b=a
print("a={} b={}".format(a,b))

a=5
print("a={} b={}".format(a,b))
a=3 b=3
a=5 b=3
In [203]:
list1=[1, 2, 3]
list2=list1
list2[1]=100 # 2 ->100으로 바꿈 
print(list1)
print(list2)
[1, 100, 3]
[1, 100, 3]
In [204]:
list1=[1, 2, 3]
list2=list1.copy()
list2[1]=100 # 2 ->100으로 바꿈 
print(list1)
print(list2)
[1, 2, 3]
[1, 100, 3]
In [206]:
list0=["a", "b"]
list1=[list0, 1, 2]
list2=list1.copy()

list2[0][1]= "c" #b ->c 
print(list1)
print(list2)
[['a', 'c'], 1, 2]
[['a', 'c'], 1, 2]
In [208]:
import copy 

list0=["a", "b"]
list1=[list0, 1, 2]
list2=copy.deepcopy(list1)

list2[0][1]= "c" #b ->c 
print(list1)
print(list2)
[['a', 'b'], 1, 2]
[['a', 'c'], 1, 2]
In [210]:
list1=[1,2,3] 
list2=list1
list3=list1.copy()

print("1==2:", list1 is list2)
print("1==3:", list1 is list3)
print("2==3:", list2 is list3)
1==2: True
1==3: False
2==3: False
In [214]:
a=1
b=a
print("a={} b={} : {}".format(a,b, a is b))

a=5
print("a={} b={} : {}".format(a,b, a is b))

a=301
b=a
print("a={} b={} : {}".format(a,b, a is b))

b=301
print("a={} b={} : {}".format(a,b, a is b))
a=1 b=1 : True
a=5 b=1 : False
a=301 b=301 : True
a=301 b=301 : False

+ Recent posts