Python数字顺序调整脚本执行提前停止故障排查
故障原因说明
核心故障:缩进错误导致仅输出单条结果
你当前代码的print语句没有写在for循环的缩进块内,程序会先执行完所有for循环迭代,再执行1次print语句,此时打印的是循环结束后最后一次迭代的变量值,自然只能看到1条输出。
原代码的错误缩进示意:
if __name__ == '__main__': n = int(input("od čisla:")) m = int(input("do čisla:")) for i in range(1,m + 1): sucet: int = math.floor(sucet_cisel(n*i)) t=(n*i)*(2) x=' '; # print 完全在for循环外,仅执行1次 print(n,"*",i,"=",n*i,(x*4),"*2","=",t,sep='')
新增数位调整逻辑的关联问题
你提供的数位调整代码目前没有集成到主逻辑中,同时存在两个潜在异常点:
- 你当前逻辑转换的是循环变量
i,如果要调整的是n*i的计算结果,需要将n*i转为字符串处理,而非转换i - 如果待处理的数字不足3位,执行
pop(-3)会直接抛出IndexError异常,导致程序中断,需要先判断数字长度再执行调整操作
修复后参考代码
import math def sucet_cisel(number): bla: int = 0 while number > 0: xyzpremenna = number % 10 bla += xyzpremenna number = (number - xyzpremenna) / 10 return bla def digit_root(n): if n == 0: return 0 return (n - 1) % 9 + 1 if __name__ == '__main__': n = int(input("od čisla:")) m = int(input("do čisla:")) for i in range(1,m + 1): sucet: int = math.floor(sucet_cisel(n*i)) origin_val = n * i t = origin_val * 2 x=' ' # 集成数位调整逻辑,先判断长度避免报错 val_str = str(origin_val) if len(val_str) >=3: val_list = list(val_str) digit = val_list.pop(-3) new_val = int(''.join(val_list+[digit])) else: # 不足3位时可按需求自定义处理,这里默认保留原值 new_val = origin_val # print放到循环缩进内,每次迭代都执行 print(n,"*",i,"=",origin_val,(x*4),"*2","=",t," 调整后值:",new_val, sep='')
内容的提问来源于stack exchange,提问作者Death Book
相关产品推荐
相关产品推荐

