侧边栏壁纸
博主头像
phphi

phphi's blog

  • 累计撰写 51 篇文章
  • 累计收到 0 条评论

Day15 - 函数应用实战

2026-4-24 / 0 评论 / 2 阅读

函数应用实战

实例1:随机验证码

import random
import string

ALL_CHARS = string.digits + string.ascii_letters

def generate_code(*, code_len=4):
    """生成指定长度的随机验证码"""
    return ''.join(random.choices(ALL_CHARS, k=code_len))

# 测试
for _ in range(5):
    print(generate_code())       # 默认4位
    print(generate_code(code_len=6))  # 指定6位

string.digits = '0123456789'
string.ascii_letters = 所有英文字母

实例2:判断素数

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

技巧:只需检查到 √n,因子是成对出现的。

实例3:最大公约数和最小公倍数

def gcd(x: int, y: int) -> int:
    """欧几里得算法求最大公约数"""
    while y % x != 0:
        x, y = y % x, x
    return x

def lcm(x: int, y: int) -> int:
    """最小公倍数"""
    return x * y // gcd(x, y)

实例4:数据统计函数

def mean(data):
    """算术平均数"""
    return sum(data) / len(data)

def median(data):
    """中位数"""
    temp = sorted(data)
    n = len(temp)
    if n % 2 == 0:
        return (temp[n//2 - 1] + temp[n//2]) / 2
    return temp[n // 2]

def variance(data, ddof=1):
    """方差(ddof=1为样本方差,ddof=0为总体方差)"""
    x_bar = mean(data)
    return sum((x - x_bar) ** 2 for x in data) / (len(data) - ddof)

def std(data, ddof=1):
    """标准差"""
    return variance(data, ddof) ** 0.5

def describe(data):
    """输出描述性统计"""
    print(f'均值: {mean(data):.2f}')
    print(f'中位数: {median(data):.2f}')
    print(f'标准差: {std(data):.2f}')

实例5:双色球函数化

import random

RED_BALLS = list(range(1, 34))
BLUE_BALLS = list(range(1, 17))

def choose():
    """生成一组双色球号码"""
    reds = sorted(random.sample(RED_BALLS, 6))
    blue = random.choice(BLUE_BALLS)
    return reds, blue

def display(reds, blue):
    """格式化输出号码"""
    print('  '.join(f'\033[031m{r:02d}\033[0m' for r in reds), end='  ')
    print(f'\033[034m{blue:02d}\033[0m')

n = int(input('生成几注: '))
for _ in range(n):
    reds, blue = choose()
    display(reds, blue)

总结

  • 重复使用的功能封装为函数,调用时无需关注内部实现
  • 函数设计原则:单一职责(一个函数只做一件事)、适当的大小(不过于冗长)
  • Python 标准库已有 statisticsmathrandom 等模块,优先复用