如何在Python中不使用字符串方法反转整数及代码报错排查
代码错误点
- 变量名不统一:输入的数值存储在
sayi变量中,但内层循环判断条件用了未定义的number变量,运行会直接抛出名称错误。 - 除法运算符使用错误:Python中
/为浮点数除法,运算后会得到小数,比如123 / 10 = 12.3,无法正常终止循环,需要替换为整数除法//。 - 反转逻辑不完整:当前代码仅逐位打印原数的末位,没有拼接得到完整的反转整数,不符合反转整数的需求。
- 缺少负数处理逻辑:如果输入负整数(除了用作退出的-1),现有循环条件
>0会直接跳过,无法处理负数反转。
修正后可运行代码
count = 1 while count != 0: sayi = int(input("Number:\n")) if sayi == -1: break # 标记数值符号 sign = -1 if sayi < 0 else 1 number = abs(sayi) reversed_num = 0 while number > 0: # 取当前数值最后一位 last_digit = number % 10 # 拼接得到反转数 reversed_num = reversed_num * 10 + last_digit # 移除已经处理的最后一位 number = number // 10 # 恢复数值符号 reversed_num *= sign print("Reversing number :{}".format(reversed_num)) count += 1
逻辑说明
- 先对输入数值做符号标记,把原数转成绝对值处理,反转完成后再恢复符号,兼容正负数反转需求。
- 逐位取原数末位,通过
reversed_num = reversed_num * 10 + last_digit的方式拼接反转后的完整整数,而非仅打印单个数位。 - 使用整数除法
//去掉已经处理过的末位,保证循环可以正常终止。 - 调整了退出判断的顺序,代码逻辑更简洁。
内容的提问来源于stack exchange,提问作者user17097848
相关产品推荐
相关产品推荐

