一、获取当前系统时间并格式化输出
在日常开发中,时间处理是非常常见的需求。我们需要先获取当前的系统时间,再将其格式化为指定的 “年 - 月 - 日 小时:分钟:秒” 字符串格式。
实现代码
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=" ")