【Python编程实战 | 第二十三篇】文件数字重叠

【精选优质专栏推荐】


每个专栏均配有案例与图文讲解,循序渐进,适合新手与进阶学习者,欢迎订阅。

文章目录

在这里插入图片描述

以题代练掌握Python知识点,在代码中理解思路,不做过多叙述。

题目

给定两个 .txt 文件,文件中分别包含数字列表:

1.一个文件列出 1000 以下的所有素数(prime numbers)。
2.另一个文件列出 1000 以下的所有快乐数(happy numbers)。

编写程序,找出两个文件中重复出现的数字(即同时是素数又是快乐数的数字)。

提示:

  • 素数是除了 1 和自身外不能被其他数字整除的数。
  • 快乐数在数学中有定义,可参考维基百科;简单理解是将一个数的各位数字平方和重复计算,最终结果为 1 的数即为快乐数。

代码

1.用 Python 脚本生成两个测试用的 .txt 文件:一个包含 1000 以下的素数,另一个包含 1000 以下的快乐数。

# 生成素数列表
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

primes = [x for x in range(2, 1000) if is_prime(x)]

with open("primes.txt", "w", encoding="utf-8") as f:
    for p in primes:
        f.write(str(p) + "\n")

print("素数文件 'primes.txt' 已生成。")


# 生成快乐数列表
def is_happy(n):
    seen = set()
    while n != 1 and n not in seen:
        seen.add(n)
        n = sum(int(digit)**2 for digit in str(n))
    return n == 1

happy_numbers = [x for x in range(1, 1000) if is_happy(x)]

with open("happy_numbers.txt", "w", encoding="utf-8") as f:
    for h in happy_numbers:
        f.write(str(h) + "\n")

print("快乐数文件 'happy_numbers.txt' 已生成。")

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.代码:

# 读取第一个文件(素数)
with open("primes.txt", "r", encoding="utf-8") as f:
    primes = set(int(line.strip()) for line in f)

# 读取第二个文件(快乐数)
with open("happy_numbers.txt", "r", encoding="utf-8") as f:
    happy_numbers = set(int(line.strip()) for line in f)

# 找出重叠数字
overlap = primes & happy_numbers  # 取集合交集

# 输出结果
print("同时是素数和快乐数的数字有:")
print(sorted(overlap))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值