面向对象之编写一个色子类

本人自己摸索的方法:
class Dice:
    """
    编写一个色子类,要求:
    1.具有6个面,每个面为一种颜色
    2.每种颜色代表一个数值(1-6)
    3.实现一个通过颜色计算两种其代表数值和的静态方法
    4.实现一个类方法(gen_dice)用于产生这个类的实例
    """
    @staticmethod
    def cal(color1,color2):
        face = 0
        def color_stand(color):
            if color == "red":
                face = 1
            elif color == "green":
                face = 2
            elif color == "pray":
                face = 3
            elif color == "yellow":
                face = 4
            elif color == "blue":
                face = 5
            elif color == "pink":
                face = 6
            else:
                print("your color is wrong!")
            return face
        num = color_stand(color1)+color_stand(color2)
        print(num)
    @classmethod
    def gen_dice(cls):
        return cls()
    
dice = Dice.gen_dice()
print(dice)
dice.cal("green","yellow")

然而总感觉太臃肿。。。

于是在网上查找了一下,发现一个更简洁的:https://zhidao.baidu.com/question/1735572021929033547.html?qbl=relate_question_0&word=%B1%E0%D0%B4%D2%BB%B8%F6%C9%AB%D7%D3%C0%E0

具体代码:

class Dice:
    """
    编写一个色子类,要求:
    1.具有6个面,每个面为一种颜色
    2.每种颜色代表一个数值(1-6)
    3.实现一个通过颜色计算两种其代表数值和的静态方法
    4.实现一个类方法(gen_dice)用于产生这个类的实例
    """
    face = {"red":1,"green":2,"yellow":3,"blue":4,"pray":5,"pink":6}
    @staticmethod
    def sum(color1,color2):
        sum  = Dice.face.get(color1)+Dice.face.get(color2)
        return sum
    @classmethod
    def gen_dice(cls):
        return cls()
dice = Dice.gen_dice()
print(dice)
dice.sum("yellow","blue")

其中有一个get()方法,它是属于字典的一个方法。

语法:

dict.get(key, default=None)
对于参数:
key -- 字典中要查找的键。
default -- 如果指定键的值不存在时,返回该默认值值。
简单理解就是可以通过字典的键名获取相对应的键值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值