鱼C论坛

 找回密码
 立即注册
查看: 2577|回复: 1

问下有关input的用法

[复制链接]
发表于 2016-9-1 11:22:58 | 显示全部楼层 |阅读模式

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

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

x
这是第37讲的课后作业,我稍微做了点改进

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)
a = input('请输入成人人数:')
c = input('请输入儿童人数:')
print('总票价为:%.2f'%(adult.calcPrice(a) + child.calcPrice(c)))


错误代码:
Traceback (most recent call last):
  File "C:/Users/keepenjoy/Desktop/票价.py", line 20, in <module>
    print('总票价为:%d'%(adult.calcPrice(a) + child.calcPrice(c)))
  File "C:/Users/keepenjoy/Desktop/票价.py", line 13, in calcPrice
    return self.exp * self.inc * self.discount * num
TypeError: can't multiply sequence by non-int of type 'float'
>>>

源代码:
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


求解惑

谢米娜撒麻
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-1 14:50:00 | 显示全部楼层
报错信息应该是:
Traceback (most recent call last):
  File "C:\python35\time.py", line 20, in <module>
    print('总票价为:%.2f'%(adult.calcPrice(a) + child.calcPrice(c)))
  File "C:\python35\time.py", line 13, in calcPrice
    return self.exp * self.inc * self.discount * num
TypeError: can't multiply sequence by non-int of type 'float'
明显一看是type数据类型的问题,因为:
a = input('请输入成人人数:')
c = input('请输入儿童人数:')
这样下来a和c是字符串类型,只要稍加修改进行字符串的转换就可以了:
a = int(input('请输入成人人数:'))
c = int(input('请输入儿童人数:'))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-22 13:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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