1. 特殊累加求和
# 计算特定序列的累加和
# 初始值a=1,每次循环i增加2,a更新为i+a,直到a超过10000
i = 1
sum_ = 0
a = 1
while a <= 10000:
sum_ = sum_ + a # 累加当前a的值
i += 2 # i每次递增2
a = i + a # 更新a的值
print(sum_) # 输出每次累加后的结果
2. 分数序列输出
# 打印从1到100的倒数序列:1, 1/2, 1/3, ..., 1/100
for i in range(1, 101): # 遍历1到100的整数
print(1/i) # 输出每个数的倒数
3. 计算日期序号
# 输入年、月、日,计算该日期是当年的第几天
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入几号:'))
date = day # 初始化天数为输入的日
# 累加当前月份之前的所有月份天数
for i in range(1, month):
if i in [1, 3, 5, 7, 8, 10]: # 大月31天
date += 31
elif i in [4, 6, 9, 11]: # 小月30天
date += 30
else: # 2月需要判断闰年
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
date += 29 # 闰年2月29天
else:
date += 28 # 平年2月28天
print(date) # 输出结果
4. 九九乘法表
# 使用嵌套循环打印标准的九九乘法表
for i in range(1, 10): # 外层循环控制行数(1-9)
for j in range(1, i+1): # 内层循环控制每行的列数(不超过当前行数)
print(i, '*', j, '=', i*j, end='\t') # 输出乘法表达式,使用制表符分隔
print() # 换行
5. 数字金字塔
# 打印数字金字塔图形:
# 1
# 22
# 333
# 4444
# 55555
for i in range(1, 6): # 控制行数(1-5)
for j in range(i): # 每行打印i个数字
print(i, end='') # 打印当前行号,不换行
print() # 换行
6. 最大公约数计算
# 使用欧几里得算法计算两个数的最大公约数
a = int(input('请输入第一个数:'))
b = int(input('请输入第二个数:'))
if a < b: # 确保a大于等于b
a, b = b, a
while b != 0: # 辗转相除法
c = a % b
a = b
b = c
print(a) # 输出最大公约数
7. 质因数分解
# 将一个正整数分解为质因数的乘积
num_ = int(input('输入一个数字:')) # 原始输入值
num = num_ # 用于计算的副本
list01 = [] # 存储质因数的列表
i = 2 # 从最小的质数2开始
while True:
while True:
if num % i == 0: # 如果i是当前数的因数
list01.append(i) # 将i添加到因数列表
num //= i # 整除更新当前数
else:
break # 无法整除时跳出内层循环
if num ** 0.5 < i: # 判断是否已找到所有质因数
if num == 1:
break # 分解完成
else:
list01.append(num) # 添加最后一个质因数
break
i = i + 1 # 尝试下一个可能的因数
# 格式化输出结果
c = str(list01[0])
for i in range(1, len(list01)):
c = c + '*' + str(list01[i])
print(num_, '=', c)
8. 素数筛选
# 找出100以内的所有素数(质数)
for i in range(2, 101): # 遍历2到100的所有数
is_prime = True # 假设当前数是素数
for j in range(2, int(i ** 0.5) + 1): # 检查到平方根即可
if i % j == 0: # 如果能被整除
is_prime = False # 标记为非素数
break # 提前退出循环
if is_prime: # 如果仍然是素数标记
print(i) # 输出该素数
9. π 的近似计算
# 使用莱布尼茨级数公式计算π的近似值
# π/4 ≈ 1 - 1/3 + 1/5 - 1/7 + ...
sum_series = 1 # 初始化累加和
denominator = 1 # 分母初始值
for i in range(1, 1000001): # 计算前100万项
if i == 1: # 第一项为1
sum_series = 1
elif i % 2 == 0: # 偶数项为减
sum_series = sum_series - (1/denominator)
else: # 奇数项为加
sum_series = sum_series + (1/denominator)
denominator += 2 # 分母每次增加2
print(sum_series * 4) # 输出π的近似值
10. 百钱买百鸡问题
# 经典数学问题:公鸡5元,母鸡3元,小鸡1元3只
# 用100元买100只鸡,求各买多少只
for i in range(1, 101): # 公鸡数量范围
for j in range(1, 101): # 母鸡数量范围
for k in range(1, 101): # 小鸡数量范围
# 满足总钱数和总鸡数的条件
if i*5 + j*3 + k/3 == 100 and i + j + k == 100:
print(f'公鸡{i}个,母鸡{j}个,小鸡{k}个')
11. 月份日历生成
# 输入年份和月份,生成对应的日历
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
# 计算蔡氏公式中的参数,用于确定每月第一天是星期几
D = 1 # 固定为1,表示每月第一天
if 2 < month < 13:
M = month - 2
C = year // 100
Y = year % 100
elif 0 < month < 3:
M = month + 10
Y = (year - 1) % 100
C = (year - 1) // 100
else:
print('输入的月份有误!!!请输入1~12月')
exit()
# 蔡氏公式计算星期几(0=星期日,1=星期一...)
W = int(((26 * M - 2) // 10 + D + Y + Y // 4 + C // 4 - 2 * C) % 7)
if W < 0:
W = W + 7
# 确定当月的天数
if month < 0 or month > 12:
print('输入不合法!')
elif month in [1, 3, 5, 7, 8, 10, 12]:
num = 31
elif month in [4, 6, 9, 11]:
num = 30
elif (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
num = 29 # 闰年2月
else:
num = 28 # 平年2月
# 打印日历头部
ls01 = '日一二三四五六'
for i in ls01:
print(i, end='\t')
print()
# 打印日期
for i in range(1, num + 1):
if i == 1: # 处理第一行的空格
for j in range(W):
print('', end='\t')
print(i, end='\t')
if (i + W) % 7 == 0: # 每7个日期换行
print()