鱼C论坛

 找回密码
 立即注册
查看: 1162|回复: 15

[已解决]类和对象

[复制链接]
发表于 2020-8-16 11:57:18 | 显示全部楼层 |阅读模式

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

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

x
class Ticket():
    a = 100 #平日票价
    b = 120 #周末票价
    c = 50  #儿童平日
    d = 60  #儿童周末
   
   
    def bb(self):
        k= input("成人数量:")
        e = input("儿童数量:")
        f = input("今天星期(数字1—7):")
        if f == "6" or "7":
            g = k * int(self.b)
            h = e * int(self.d)
            return (g+h)
        else:
            g= k * int(self.a)
            h= e * int(self.c)
            return (g+h)
    

定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价:
平日票价100元
周末票价为平日的120%
儿童半票

为什么运行出来的是100或者120个 成人数量和儿童数量?
最佳答案
2020-8-16 13:23:17
class Ticket():
    a = 100  # 平日票价
    c = 50  # 儿童平日
    #b = 120  # 周末票价
    #d = 60  # 儿童周末

    def bb(self):
        k = input("成人数量:")
        e = input("儿童数量:")
        f = input("今天星期(数字1—7):")
        all=int(k)* int(self.a)+int(e) * int(self.c)
        if f == "6" or f =="7":
            return all*1.2
        else:
            return all
z=Ticket()
print(z.bb())

价格是整体浮动20%,没必要分开计算吧,input进来的数字要int()处理,if后面的判断写岔了,写完了就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-16 11:58:18 | 显示全部楼层
这样试试:
class Ticket():
    a = 100  # 平日票价
    b = 120  # 周末票价
    c = 50  # 儿童平日
    d = 60  # 儿童周末

    def bb(self):
        k = int(input("成人数量:"))
        e = int(input("儿童数量:"))
        f = input("今天星期(数字1—7):")
        if f == "6" or "7":
            g = k * int(self.b)
            h = e * int(self.d)
            return (g + h)
        else:
            g = k * int(self.a)
            h = e * int(self.c)
            return (g + h)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 12:08:13 | 显示全部楼层
input接收的是str,要转换成int
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-16 12:12:01 | 显示全部楼层


                               
登录/注册后可看大图


为啥算出来是300.。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 12:14:49 | 显示全部楼层
小小鹏 发表于 2020-8-16 12:12
为啥算出来是300.。。。

没问题啊,100 * 120% * 2 + 100 * 1/2 * 120% 就是等于 300
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-16 12:33:20 | 显示全部楼层
zltzlt 发表于 2020-8-16 12:14
没问题啊,100 * 120% * 2 + 100 * 1/2 * 120% 就是等于 300

我以为当我输入成人2个,小孩1个,数字2时,就是运行else里面的内容,也就是2*100+1*50 等于250
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 12:43:02 | 显示全部楼层
小小鹏 发表于 2020-8-16 12:33
我以为当我输入成人2个,小孩1个,数字2时,就是运行else里面的内容,也就是2*100+1*50 等于250

先搞好逻辑啊亲~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 12:56:07 | 显示全部楼层
小小鹏 发表于 2020-8-16 12:33
我以为当我输入成人2个,小孩1个,数字2时,就是运行else里面的内容,也就是2*100+1*50 等于250

哦,看错了,这样即可
class Ticket():
    a = 100  # 平日票价
    b = 120  # 周末票价
    c = 50  # 儿童平日
    d = 60  # 儿童周末

    def bb(self):
        k = input("成人数量:")
        e = input("儿童数量:")
        f = input("今天星期(数字1—7):")
        if f == "6" or f == "7":
            g = k * int(self.b)
            h = e * int(self.d)
            return (g + h)
        else:
            g = k * int(self.a)
            h = e * int(self.c)
            return (g + h)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 13:23:17 | 显示全部楼层    本楼为最佳答案   
class Ticket():
    a = 100  # 平日票价
    c = 50  # 儿童平日
    #b = 120  # 周末票价
    #d = 60  # 儿童周末

    def bb(self):
        k = input("成人数量:")
        e = input("儿童数量:")
        f = input("今天星期(数字1—7):")
        all=int(k)* int(self.a)+int(e) * int(self.c)
        if f == "6" or f =="7":
            return all*1.2
        else:
            return all
z=Ticket()
print(z.bb())

价格是整体浮动20%,没必要分开计算吧,input进来的数字要int()处理,if后面的判断写岔了,写完了就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 14:15:25 | 显示全部楼层
if f == "6" or "7"
这一行写的有问题啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-16 14:51:45 | 显示全部楼层
疾风怪盗 发表于 2020-8-16 13:23
价格是整体浮动20%,没必要分开计算吧,input进来的数字要int()处理,if后面的判断写岔了,写完了就好 ...
class Ticket():
    a = 100  # 平日票价
    b = 120  # 周末票价
    c = 50  # 儿童平日
    d = 60  # 儿童周末

    def bb(self):
        k = input("成人数量:")
        e = input("儿童数量:")
        f = input("今天星期(数字1—7):")
        if f == "6" or f == "7":
            g = int(k) * int(self.b)
            h = int(e) * int(self.d)
            return (g + h)
        else:
            g = int(k) * int(self.a)
            h = int(e) * int(self.c)
            return (g + h)

嗯嗯 你的代码运行是正确的,我最开始的问题就是input进来的数字没有进行int()处理。所以有问题。我现在int()处理,运行的结果也是可以的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-16 14:53:09 | 显示全部楼层
zltzlt 发表于 2020-8-16 12:56
哦,看错了,这样即可

你这个代码就是我最开始的代码。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 14:55:35 | 显示全部楼层
小小鹏 发表于 2020-8-16 14:53
你这个代码就是我最开始的代码。。。

?不是呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 14:59:18 | 显示全部楼层
小小鹏 发表于 2020-8-16 14:53
你这个代码就是我最开始的代码。。。

你最开始的代码,有两个错,没有int(),还有就是if判断没写完整
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 15:00:05 | 显示全部楼层
小小鹏 发表于 2020-8-16 14:53
你这个代码就是我最开始的代码。。。

版主帮你改了两次,但是两次都只改了一个错,你再仔细看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-16 15:33:48 | 显示全部楼层

噢噢我看懂啦 不好意思呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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