Python计算数字位数程序出现while循环无限打印问题如何解决
无限循环的原因
- 你代码中的
while interger != 0循环内,仅8位数字的判断分支加了break跳出逻辑,其余所有分支执行完打印操作后,既没有修改interger的取值,也没有终止循环的逻辑,只要输入的数字不是0也不是8位,循环条件永远成立,就会无限重复打印对应结果。 - 你的判断逻辑还存在几处漏洞:
- 10、100这类边界值没有覆盖到,会落到最后一个
elif interger == interger的分支,而这个分支的判断条件永远为真,属于无效逻辑 - 没有兼容0、负数、超过8位的数字的计算场景
- 变量名
interger存在拼写错误,正确拼写为integer(不影响运行,仅代码规范问题)
- 10、100这类边界值没有覆盖到,会落到最后一个
修复方案
方案1:兼容原有写法的修复版本
仅补充跳出逻辑和边界处理,保留你原来的分支判断写法:
integer = int(input('请输入一个整数,程序会计算它的位数:')) # 处理负数 if integer < 0: integer = abs(integer) while True: if integer == 0: print('1位') break elif 0 < integer < 10: print ('1位') break elif 9 < integer < 100: print('2位') break elif 99 < integer < 1000: print('3位') break elif 999 < integer < 10000: print('4位') break elif 9999 < integer < 100000: print('5位') break elif 99999 < integer < 1000000: print ('6位') break elif 999999 < integer < 10000000: print('7位') break elif 9999999 < integer < 100000000: print('8位') break else: print(f'{len(str(integer))}位') break
方案2:通用while循环实现(不限数字位数)
不需要写大量分支判断,适配所有整数的位数计算:
integer = int(input('请输入一个整数,程序会计算它的位数:')) temp = abs(integer) count = 0 # 单独处理0的场景 if temp == 0: count = 1 else: while temp > 0: count += 1 # 每次去掉整数的最后一位 temp = temp // 10 print(f'该数字共有{count}位')
内容的提问来源于stack exchange,提问作者oopsylon
相关产品推荐
相关产品推荐

