Python实战

90 阅读2分钟

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

在日常开发中,时间处理是非常常见的需求。我们需要先获取当前的系统时间,再将其格式化为指定的 “年 - 月 - 日 小时:分钟:秒” 字符串格式。

实现代码

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)。
  • 回文素数:既是素数,又满足从左向右读和从右向左读是同一个数的数。

实现代码

def is_palindrome(num):
    """判断一个数是否是回文数"""
    num_str = str(num)
    return num_str == num_str[::-1]  # 字符串切片反转后比较

def is_prime(num):
    """判断一个数是否是素数"""
    if num < 2:  # 素数是大于1的整数
        return False
    if num == 2:  # 2是最小的素数
        return True
    # 优化:只需遍历到num的平方根,减少循环次数
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

# 收集2~1000内的回文素数
palindrome_prime_list = []
for num in range(2, 1001):
    if is_prime(num) and is_palindrome(num):
        palindrome_prime_list.append(num)

print("2~1000内的所有回文素数:", palindrome_prime_list)

三、打印 1000 以内的所有完数

概念说明

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

实现代码

import math

def is_perfect_number(num):
    """判断一个数是否是完数"""
    if num < 2:  # 完数是大于1的整数
        return False
    sum_factor = 1  # 1是所有大于1的整数的真因子,初始化为1
    # 遍历到num的平方根,获取所有真因子
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            sum_factor += i
            # 避免重复添加平方数的情况(如4的因子2,只加一次)
            if num // i != i:
                sum_factor += num // i
    return sum_factor == num

print("1000以内的所有完数:")
for num in range(2, 1001):  # 从2开始,因为1没有真因子
    if is_perfect_number(num):
        print(num, end=" ")