为了账号安全,请及时绑定邮箱和手机立即绑定

代码和报错如图所示:求指点

代码和报错如图所示:求指点

萧十郎 2023-03-18 18:14:35
我知道这个意思是.isdigit不能接受整型数据输入,但是input不是会把输入的数字都变成字符串类型的吗?我输入什么都是变成字符串类型啊。所以为什么还会有这种报错提示?网上说要用raw_input(),但是现在的python3已经没有这个函数了,我用的是3.8
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

之所以报错是因为while循环从第2次开始执行时, selectcourse这个变量的类型就变成 整型 了, 而整型是没有isdigit()函数的, 所以才会报错.
咱们简单的过一下代码的执行过程:
a.第12行执行后, 你输入的是2, 所以此时selectcourse这个变量是字符串类型值'2', 从你的提问来看,这一点你是理解的, 接着向下看
b.然后就执行while True这个循环了, 我们先看这个while循环第一次执行, 第14行的if语句条件判断是true,因为2是数字, 所以if下的15,16行会被执行, 这块是关键, 第15行执行后, selectcourse的类型就不再是一开始的字符串类型了, 而是变成了整型; 16行打印输出就不讲了. 这是while True循环的第一次执行, 这次执行最最关键的就是将selectcourse这个变量的类型由字符串类型改为了整型(报错的起始点就在这).
c.再看while循环的第2次执行, 第2次执行又到第14行判断if条件这了, 你的报错其实就是这会儿出现的, 因为第1次while循环已经将selectcourse这个变量的类型改为了整型, 所以第2次再去执行if的条件时, 就会报错了, 因为selectcourse此时是整型, 而整型是没有isdigit()函数的.

查看完整回答
反对 回复 2023-03-21
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信