Python获取指定范围Armstrong数,无结果时仅输出一次-1的实现问题
解决方法
你可以通过添加全局标记变量记录是否找到过阿姆斯特朗数,遍历结束后再根据标记判断是否输出-1,不要在循环内加else分支。
修改后的完整代码如下:
lower = int(input()) upper = int(input()) # 标记是否找到过阿姆斯特朗数 found = False for num in range(lower, upper + 1): order = len(str(num)) sum = 0 temp = num while temp > 0: digit = temp % 10 sum += digit ** order temp //= 10 if num == sum: print(num, end = " ") found = True # 遍历结束后判断是否无符合条件的结果 if not found: print(-1)
原问题原因
你之前在循环内加else分支,会对每个不满足条件的数都触发一次输出逻辑,自然会重复打印-1。改成全局标记的方式后,只有整个范围遍历完都没找到符合条件的数,才会触发一次-1的输出,完全符合需求。
内容的提问来源于stack exchange,提问作者srav_ini.h
相关产品推荐
相关产品推荐

