A.I
주사위 만들기 본문
주사위 n면체 만들기¶
1. 클래스 기본 문법¶
In [2]:
# Self로 자기자신을 꼭 참조시켜야함
class Car:
color = 'red'
category = 'sports car'
def drive(self):
print("I'm driving")
def accel(self, speed_up, current_speed=10):
self.speed_up = speed_up
self.current_speed = current_speed + speed_up
print("speed up", self.speed_up, "driving at", self.current_speed)
In [3]:
# t.run2()의 경우 b값을 찾을수 없음
class Test2:
def run1(self, a):
self.a = float(a) * 10
print(self.a)
def run2(self, b):
b = float(b) + 10
print(self.b)
t = Test2()
In [4]:
# color, category를 초기화 시킴 __init__, 클래스를 인스턴스화 할 때 값을 설정할수 있음.
class Car2:
def __init__(self, color, category):
self.color = color
self.category = category
def drive(self):
print("I'm driving")
def accel(self, speed_up, current_speed=10):
self.speed_up = speed_up
self.current_speed = current_speed + self.speed_up
print("speed up", self.speed_up, "driving at", self.current_speed)
In [5]:
#인스턴스 객체 선언
car1 = Car()
car2 = Car2('yellow', 'sedan')
In [8]:
car1.color,car2.color
Out[8]:
('red', 'yellow')
2. 상속¶
In [9]:
class Car:
Manufacture = "India"
def __init__(self, color='red', category='sedan'):
self.color = color
self.category = category
def drive(self):
print("I'm driving")
def accel(self, speed_up, current_speed=10):
self.speed_up = speed_up
self.current_speed = current_speed + self.speed_up
print("speed up", self.speed_up, "driving at", self.current_speed)
In [10]:
# 상속
class NewCar(Car):
pass
car = NewCar()
car.drive()
car.accel(10)
I'm driving speed up 10 driving at 20
In [11]:
class NewCar(Car):
maker = 'Porsche'
car = NewCar()
car.maker
Out[11]:
'Porsche'
In [12]:
# 메소드 추가하기
class NewCar(Car):
def fly(self):
print("I'm flying!! This is the new car!!")
In [13]:
# 메소드 오버라이드(재정의)
class NewCar(Car):
def fly(self): # 추가
print("I'm flying!! This is the new car!!")
def drive(self): # 재정의
print("I'm driving and can fly")
In [14]:
# 부모 클래스의 변경사항이 그대로 자식 클래스에 반영되므로 필요한 부분만 가져와 변경가능한 super()
class Car:
Manufacture = "India"
def __init__(self, color='red', category='sedan'):
self.color = color
self.category = '2020Y '+ category
class NewCar(Car):
def __init__(self, color, category, maker):
super().__init__(color, category)
self.maker = maker
newcar = NewCar('red','sports car', 'Kia')
print(newcar.category)
2020Y sports car
3. 주사위 만들기¶
3-1. 기획¶
- 클래스 이름 : FunnyDice
- 주사위 면의 개수 n을 인스턴스 변수로 선언해 주사위 면의 개수 n을 입력 : throw
- 주사위의 값을 특정한 값으로 세팅 : setval
- 현재 주사위 값 얻기 : getval
3-2. FunnyDice¶
In [27]:
from random import randrange
class FunnyDice:
def __init__(self, n=6):
self.n = n
self.options = list(range(1, n+1)) # 눈 값을 리스트화
self.index = randrange(0, self.n) # 해당 눈에 대한 index값 할당
self.val = self.options[self.index]
def throw(self):
self.index = randrange(0, self.n)
self.val = self.options[self.index]
def gettingval(self):
return self.val
def settingval(self, val):
if valnum <= self.n:
self.val = valnum
else:
print("주사위에 없는 숫자입니다. 주사위는 1 ~ {0}까지 있습니다. ".format(self.n))
raise error
def get_inputs():
n = int(input("주사위 면의 개수를 입력하세요: "))
return n
def main():
n = get_inputs()
mydice = FunnyDice(n)
mydice.throw()
print("행운의 숫자는? {0}".format(mydice.gettingval()))
if __name__ == '__main__':
main()
주사위 면의 개수를 입력하세요: 6 행운의 숫자는? 4
'파이썬 & AI 학습' 카테고리의 다른 글
비지도 학습( Unsupervised Learning ) (0) | 2021.01.29 |
---|---|
포켓몬 찾기 (0) | 2021.01.27 |
sklearn의 이해 (0) | 2021.01.22 |
파이썬으로 그래프 그리기 (0) | 2021.01.20 |
fibonacci함수 (0) | 2021.01.08 |