鱼C论坛

 找回密码
 立即注册
查看: 2092|回复: 8

[已解决]037动动手0

[复制链接]
发表于 2019-11-19 15:21:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
零基础入门学习python中037动动手0 算票价:按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价——平日票价100元,周末票价为平日的120%,儿童半价
源码:
class Ticket():
        def __init__(self, weekend=False, child=False):
                self.exp = 100
                if weekend:
                        self.inc = 1.2
                else:
                        self.inc = 1
                if child:
                        self.discount = 0.5
                else:
                        self.discount = 1
        def calcPrice(self, num):
                return self.exp * self.inc * self.discount * num

>>> adult = Ticket()
>>> child = Ticket(child=True)
>>> print("2个成人 + 1个小孩平日票价为:%.2f" % (adult.calcPrice(2) + child.calcPrice(1)))
2个成人 + 1个小孩平日票价为:250.00

提问: if weekend: 和 if child: 都是指 if False: 吗?  建立实例对象时,adult=Ticket()里都是默认参数False吧。 这些怎么理解呢
最佳答案
2019-11-19 19:41:50
John车俊林 发表于 2019-11-19 16:41
但缺省参数里,False赋予给了weekend.那么if weekend 不就应该是if False吗?(child也是)不然写缺省参数 ...

如果没有指定 weekend 和 child,它们将自动赋值为 False;但如果指定了 weekend 或 child,它们将变成指定的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-19 15:54:44 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-19 15:57 编辑

child = False 意思是:不是小孩;if child 意思是,如果是小孩(child == True)
weekend = False 的意思是:不是周末 ;if weekend 的意思是,如果是周末(weekend == True)
adult = Ticket() 按缺省参数(成人、平日)创建对象 adult;
child = Ticket(child=True) 按参数  child = True,weekend = False 参数创建对象 child
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-19 16:41:12 | 显示全部楼层
jackz007 发表于 2019-11-19 15:54
child = False 意思是:不是小孩;if child 意思是,如果是小孩(child == True)
weekend = False 的意思 ...

但缺省参数里,False赋予给了weekend.那么if weekend 不就应该是if False吗?(child也是)不然写缺省参数weekend=False和child=False的意义是什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 17:15:13 | 显示全部楼层
John车俊林 发表于 2019-11-19 16:41
但缺省参数里,False赋予给了weekend.那么if weekend 不就应该是if False吗?(child也是)不然写缺省参数 ...

       问到关键上了,缺省参数的意思是,创建对象的时候,这些参数是可以不写的,如果不写,那么,就按定义时给的缺省参数进行设置,如果要写,一定要按 child = ,和 weekend = 这种形式来写,那么,创建对象的时候就会用给定的参数覆盖缺省参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 19:41:50 | 显示全部楼层    本楼为最佳答案   
John车俊林 发表于 2019-11-19 16:41
但缺省参数里,False赋予给了weekend.那么if weekend 不就应该是if False吗?(child也是)不然写缺省参数 ...

如果没有指定 weekend 和 child,它们将自动赋值为 False;但如果指定了 weekend 或 child,它们将变成指定的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-19 19:56:23 | 显示全部楼层
jackz007 发表于 2019-11-19 17:15
问到关键上了,缺省参数的意思是,创建对象的时候,这些参数是可以不写的,如果不写,那么,就按 ...

嗯嗯  那这weekend/child只是参数的话,为什么if weekend/child:  就能认为是if True: 呢?我知道if后跟的条件为真,但weekend/child只是一个参数,不是布尔类型吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 20:20:03 From FishC Mobile | 显示全部楼层
John车俊林 发表于 2019-11-19 19:56
嗯嗯  那这weekend/child只是参数的话,为什么if weekend/child:  就能认为是if True: 呢?我知道if后跟 ...


       参数只是你在定义对象的时候,输入对象的变量,adult = Ticket(child = False),那么,在 __init__() 中,child 的值就是 False,这有那么难理解吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-19 21:14:03 | 显示全部楼层
zltzlt 发表于 2019-11-19 19:41
如果没有指定 weekend 和 child,它们将自动赋值为 False;但如果指定了 weekend 或 child,它们将变成指 ...

噢噢,我就想明确这个,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 19:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表