|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引用类生成对象a
a使用cost方法
输入数据范围不在try规定的范围内
只是不显示结果
为什么不会触发异常
代码如下:
class Ticket:
aday = 100
aend = aday * 1.2
cday = aday / 2
cend = aend / 2
def cost(self):
week = int(input('请输入星期几(以1234567依次对应):'))
adult = int(input('成人游客人数:'))
child = int(input('儿童游客人数:'))
try:
week in [1,2,3,4,5,6,7]
adult >= 0
child >= 0
except IndexError:#为什么不会报错
print('参数无效!')
else:
if week in [1,2,3,4,5]:
return self.aday * adult + self.cday * child
if week in [6,7]:
return self.aend * adult + self.cend * child
本帖最后由 Twilight6 于 2020-6-11 08:50 编辑
这样的输入并不会报错,这是正确的语法结构
你在IDLE界面直接调用这样的代码会返回True 或者False,这里也是同样的,返回True 或 Flase
- week in [1, 2, 3, 4, 5, 6, 7]
- adult >= 0
- child >= 0
复制代码
而且你捕获的是 IndexError ,是索引超出长度才会报错,你应该改成
这样你输入除小于等于0的数以外 大于7 的数 都会被捕获异常
建议这里还是写好if条件用 raise 产生个错误比较好
这里try 写在 上面是防止 week adult child 输入的不是数字,捕获 ValueError:
- class Ticket:
- aday = 100
- aend = aday * 1.2
- cday = aday / 2
- cend = aend / 2
- def cost(self):
- try:
- week = int(input('请输入星期几(以1234567依次对应):'))
- adult = int(input('成人游客人数:'))
- child = int(input('儿童游客人数:'))
- if week not in [1, 2, 3, 4, 5, 6, 7] or adult < 0 or child <0:
- raise ValueError
- except ValueError:
- print('错误:参数无效!')
- else:
- if week in [1, 2, 3, 4, 5]:
- return self.aday * adult + self.cday * child
- if week in [6, 7]:
- return self.aend * adult + self.cend * child
- a = Ticket()
- a.cost()
复制代码
|
|