Python 编程实战:从基础语法到算法实现 (1)

在 Python 学习的过程中,通过解决实际的编程问题能够快速提升我们的代码能力和逻辑思维。本文将围绕几个经典的编程练习题展开,涵盖日期处理、素数判断、完数求解、数字操作以及排列组合等多个知识点,带你一起感受 Python 编程的魅力。

一、获取并格式化当前系统时间

在 Python 中,datetime模块为我们提供了丰富的日期和时间处理功能。我们可以轻松获取当前系统时间,并按照指定格式进行格式化输出。

python 复制代码
import datetime
# 获取当前系统时间
now = datetime.datetime.now()
print("当前系统时间:", now)
# 格式化为"年-月-日 小时:分钟:秒"
now_str = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的时间:", now_str)

二、寻找 2~1000 内的回文素数

素数(质数)是指大于 1 且只能被 1 和它本身整除的整数,回文素数则是指既是素数又是回文数的数。要解决这个问题,我们需要分别实现素数判断和回文数判断的功能。

python 复制代码
def is_palindrome(num):
    """判断一个数是否为回文数"""
    num_str = str(num)
    return num_str == num_str[::-1]

def is_prime(num):
    """判断一个数是否为素数"""
    if num <= 1:
        return False
    if num == 2:
        return True
    if num % 2 == 0:
        return False
    for i in range(3, int(num**0.5) + 1, 2):
        if num % i == 0:
            return False
    return True

# 寻找2~1000内的回文素数
palindrome_primes = []
for num in range(2, 1001):
    if is_prime(num) and is_palindrome(num):
        palindrome_primes.append(num)
print("2~1000内的所有回文素数:", palindrome_primes)
python 复制代码
import math

def is_perfect_number(num):
    """判断一个数是否为完数"""
    if num <= 1:
        return False
    sum_factors = 1  # 1是所有大于1的数的真因子
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            sum_factors += i
            if num // i != i:  # 避免重复添加平方数的情况
                sum_factors += num // i
    return sum_factors == num

print("1000以内的所有完数:")
for num in range(2, 1001):
    if is_perfect_number(num):
        print(num, end=" ")

三、求解 1000 以内的完数

完数是指一个数恰好等于它的所有真因子(除了自身以外的约数)之和。例如 6 的真因子是 1、2、3,而 1+2+3=6,所以 6 是完数。

python 复制代码
import math

def is_perfect_number(num):
    """判断一个数是否为完数"""
    if num <= 1:
        return False
    sum_factors = 1  # 1是所有大于1的数的真因子
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            sum_factors += i
            if num // i != i:  # 避免重复添加平方数的情况
                sum_factors += num // i
    return sum_factors == num

print("1000以内的所有完数:")
for num in range(2, 1001):
    if is_perfect_number(num):
        print(num, end=" ")
相关推荐
特立独行的猫A19 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持19 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang20 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰21 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc1 天前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络1 天前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记1 天前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事1 天前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力1 天前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力1 天前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python