You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:15:03