본문 바로가기

Python

[파워 유저를 위한 파이썬 express] 8장 PROGRAMMING (p.400)

 

# page 400 1번

class Cat:
    def __init__(self,name,age):
        self.__name=name
        self.__age=age
    def __str__(self,):
        self.str_info=self.__name+" "+str(self.__age)
        return self.str_info
    def getAge(self,):
        return self.__age
    def getName(self,):
        return self.__name
    def setName(self,name):
        self.__name=name  
    def setAge(self,age):
        self.__age=age
    
    
missy=Cat('Missy',3)
lucky=Cat('Lucky',5)

print(missy)
print(lucky)

 

 

 

# page 400 2번

class Rocket:
    def __init__(self,x=0,y=0):
        self.x=x
        self.y=y
    def __str__(self,):
        self.str_info=str(self.x)+' '+str(self.y)
        return self.str_info
    def moveUp(self,):
        self.y+=1
        
myRocket=Rocket()
print('로켓의 높이:',myRocket.y)

myRocket.moveUp()
print('로켓의 높이:',myRocket.y)

 

 

 

# page 401 3번

class Box:
    def __init__(self,l,h,d):
        self.length=l
        self.height=h
        self.depth=d
    def __str__(self,):
        self.str_info='('+str(self.length)+','+str(self.height)+','+str(self.depth)+')'
        return self.str_info
    def setLength(self,l):
        self.length=l
    def setHeight(self,h):
        self.height=h
    def setDepth(self,d):
        self.depth=d
    def getLength(self,):
        return self.length
    def getHeight(self,):
        return self.height
    def getDepth(self,):
        return self.depth
    
b1=Box(100,100,100)
print(b1)
print('상자의 부피는:',b1.getHeight()*b1.getLength()*b1.getDepth())

 

 

 

# page 401 4번

class Rectangle:
    def __init__(self,x,y,w,h):
        self.x=x
        self.y=y
        self.width=w
        self.height=h
    def __str__(self,):
        self.str_info='('+str(self.x)+','+str(self.y)+','+str(self.width)+','+str(self.height)+')'
        return self.str_info
    def setX(self,x):
        self.x=x
    def setY(self,y):
        self.y=y
    def setWidth(self,w):
        self.width=w
    def setHeight(self,h):
        self.height=h
    def getX(self,):
        return self.x
    def getY(self,):
        return self.y
    def getWidth(self,):
        return self.width
    def getHeight(self,):
        return self.height
    def getArea(self,):
        return self.width*self.height
    def overlap(self,r):
        self.right_x=self.x+self.width
        self.right_y=self.y+self.width
        r.right_x=r.x+r.width
        r.right_y=r.y+r.height
        
        if self.x>r.right_x or r.x>self.right_x or self.y>r.right_y or r.y>self.right_y:
            print('r1과 r2는 서로 겹치지 않습니다.' )
        else:
            print('r1과 r2는 서로 겹칩니다.')

        
r1=Rectangle(0,0,100,100)
r2=Rectangle(10,10,100,100)
r1.overlap(r2)

 

 

 

# page 402 5번

class Triangle:
    def __init__(self,a1,a2,a3):
        self.angle1=a1
        self.angle2=a2
        self.angle3=a3
        self.numberofSides=3
        #기본 값 3
    def __str__(self,):
        self.str_info=str(self.angle1)+str(self.angle2)+str(self.angle3)
        return self.str_info
    def setAngle1(self,a1):
        self.angle1=a1
    def setAngle2(self,a2):
        self.angle2=a2
    def setAngle3(self,a3):
        self.angle3=a3
    def getAngle1(self,):
        return self.angle1
    def getAngle2(self,):
        return self.angle2
    def getAngle3(self,):
        return self.angle3
    def checkAngles(self,):
        if (self.angle1+self.angle2+self.angle3)==180:
            return True
        else:
            return False
        
triangle=Triangle(90,30,60)
print(triangle.checkAngles())

 

 

 

# page 402 6번

class Person:
    def __init__(self,name,mobile=None,office=None,email=None):
        self.name=name
        self.mobile=mobile
        self.office=office
        self.email=email
    def __str__(self,):
        s = ''
        s += self.name + '\n'
        s += "office phone:"+self.office + '\n'
        s += "email address:"+self.email + '\n'
        return s
        #self.str_info=str(self.name)+' '+str(self.mobile)+' '+str(self.office)+' '+str(self.email)
        #return self.str_info
    def setName(self,name):
        self.name=n
    def setMobile(self,mobile):
        self.mobile=m
    def setOffice(self,o):
        self.office=o
    def setEmail(self,e):
        self.email=e
    def getName(self,):
        return self.name
    def getMobile(self,):
        return self.mobile
    def getOffice(self,):
        return self.office
    def getEmail(self,):
        return self.email
    
p1=Person('kim',office='1234567',email='kim@company.com')
p2=Person('Park',office='2345678')
p2.setEmail('park@company.com')

 

 

 

# page 402 7번

class PhoneBook():
    def __init__(self):        
        self.contacts = {}

    def add(self, name, mobile=None, office=None,email=None):
        p = Person(name, mobile, office, email)
        self.contacts[name] = p
    def __str__(self):
        s = ''
        for p in sorted(self.contacts):
            s += str(self.contacts[p]) + '\n'
        return s

obj = PhoneBook()
obj.add("Kim", office="1234567", email="kim@company.com")
obj.add("Park", office="2345678", email="park@company.com")
print(obj)

 

 

 

# page 403 8번

class Song:
    def __init__(self,s):
        self.song=[]
        for i in s:
            self.song.append(i)
    def sing(self,):
        for i in self.song:
            print(i,'\n')
aSong=Song(['TWINKLE, twinkle, little star,',
           'How I wonder what you are!',
           'Up above the world so high,',
           'Like a diamond in the sky.'])
aSong.sing()