使用elif分支代替映射简化设计

本文探讨了Python中字典映射与elif条件分支在实现功能上的差异,特别是在处理扑克牌类实例创建过程中的应用。通过对两种方法的比较,讨论了它们在代码效率、可读性和一致性方面的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在Python的程序设计中,字典这样的映射程序总是可以用elif结构来代替。通常,这样可以使得设计获得更好的一致性。例如,之前有代码如下:

#!/usr/bin/python

 

class Card:

       def __init__(self,rank,suit):

              self.suit = suit

              self.rank = rank

              self.hard,self.soft =self._points()

 

classNumberCard(Card):

       def _points(self):

              returnint(self.rank),int(self.rank)

 

classAceCard(Card):

       def _points(self):

              return 1,11

 

classFaceCard(Card):

       def _points(self):

              return 10,10

 

class Suit:

       def __init__(self,name,symbol):

              self.name = name

              self.symbol = symbol

 

defcard(rank,suit):

       if rank == 1:

              return AceCard('A',suit)

       elif 2 <= rank < 11:

              return NumberCard(str(rank),suit)

       elif 11 <= rank < 14:

              name ={11:'J',12:'Q',13:'K'}[rank]

              return FaceCard(name,suit)

       else:

              raise Exception("Rank out ofrange")

       在实现card工厂函数的时候,上面的代码中使用了映射。此函数可以进行修改,设计为如下方式:

defcard(rank,suit):

       if rank == 1:

              return AceCard('A',suit)

       elif 2 <= rank < 11:

              return NumberCard(str(rank),suit)

       elif rank == 11:

              return FaceCard('J',suit)

       elif rank == 12:

              return FaceCard('Q',suit)

       elif rank == 13:

              return FaceCard('K',suit)

       else:

              raise Exception("Rank out ofrange")

       通过上面的修改,虽然代码长度有所增加,但是代码获得了更好的一致性。相比之下,如果是用于处理简单的情况,通常使用字典这样的映射会更为高效地工作也具有更好的可读性。但是elif分支的实现方式,能够更为一致性的结构和更清晰的实现意图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值