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

如何打印所有快乐数判定结果为True的数字?

实现打印快乐数的修改方案

原代码问题梳理

  • 没有封装可复用的判定逻辑,默认初始数值为0,无法遍历不同输入数字
  • 返回结果为字符串格式的'True'/'False',不便于后续逻辑调用

优化实现

首先把快乐数判定逻辑封装为独立函数,输入为待判定的整数,直接返回布尔值:

def is_happy(n: int) -> bool:
    # 迭代计算各位平方和,直到结果落到1或4
    while n not in (1, 4):
        sum_sq = 0
        for digit in str(n):
            sum_sq += int(digit) ** 2
        n = sum_sq
    return n == 1

两种输出方案

因为快乐数是无限集合,不存在输出完所有的可能,提供两种常用实现:

方案1:指定范围打印快乐数

适合需要固定区间内所有快乐数的场景,修改起止数值即可调整范围:

# 示例:打印1到200范围内的所有快乐数
start = 1
end = 200
happy_numbers = [num for num in range(start, end+1) if is_happy(num)]
print(f"{start}到{end}范围内的快乐数:")
print(happy_numbers)

方案2:无限持续打印快乐数

从1开始逐个判定打印,程序会一直运行,按Ctrl+C即可手动终止:

num = 1
print("开始打印快乐数,按Ctrl+C终止运行:")
while True:
    if is_happy(num):
        print(num, end=' ')
    num += 1

补充说明

如果需要保存输出结果,可以在打印位置增加写入文件的逻辑,避免终端输出过多内容被冲刷丢失。

内容的提问来源于stack exchange,提问作者Broski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:57:01