python代码错误'int' object has no attribute 'isdigit'该怎么解决?

代码和报错如图所示,我知道这个意思是.isdigit不能接受整型数据输入,但是input不是会把输入的数字都变成字符串类型的吗?我输入什么都是变成字符串类型啊。所以为什么还会有这种报错提示?网上说要用raw_input(),但是现在的python3已经没有这个函数了,我用的是3.8

题主你好,
之所以报错是因为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()函数的.
-----
希望可以帮到题主, 欢迎追问.追问

感谢大佬耐心解答。我完全明白了。转换为int类型的目的是接下来要做数值的比较,如何在保留while循环的情况下,对这个变量做比较呢?

追答

把第12行移到while True下作为第一行, 与if同级:

温馨提示:答案为网友推荐,仅供参考
相似回答