Python乘法表调用is_integer()处理用户输入出现AttributeError如何解决
错误原因
触发AttributeError的直接原因是:你已经将参数b转为int类型后传入函数作为multiple参数,而Python的整数类型没有is_integer()方法(该方法仅属于浮点数类型),调用不存在的方法就会抛出这个异常。
除了这个错误外,代码还有3个逻辑问题需要同步修复:
- 调用函数时传入的
a是input得到的字符串类型,没有转为数值,后续执行乘法运算时会抛出类型错误 - 循环内打印的是固定的
multiple而非循环变量i,运行后所有输出行的内容都会完全相同 - 合法性判断用了
or逻辑,应该改为and,否则只要满足任意一个条件就会通过校验,比如负数也会被判定为合法
修复方案
调整后的完整代码如下:
def multiple_generator(multiple_count, number): # 已经转成int的情况下直接判断大于0即可,不需要调用is_integer if multiple_count > 0: for i in range(1, multiple_count + 1): # 用循环变量i做计算 print(f" {number} x {i} = {number * i}") else: print("Please input a positive integer numb nuts") try: # 把被乘数也转成int a = int(input("What number you want to multiply? ")) b = int(input("How many multiples you want to see? ")) multiple_generator(b, a) except ValueError: print("Please input a positive integer ")
内容的提问来源于stack exchange,提问作者Jo.skid
相关产品推荐
相关产品推荐

