1. Python编程实战:10个经典算法问题解析
作为一名Python开发者,我经常遇到各种需要快速解决的编程问题。今天我想分享一组非常实用的Python函数实现,涵盖了字符串处理、数学计算、列表操作等多个领域。这些代码都来自实际开发中的常见需求,每个函数都经过精心设计和严格测试,可以直接应用到你的项目中。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 字符串与集合操作
2.1 多字符串包含检查
这个函数用于检查第一个字符串是否包含后面所有的字符串,这在文本处理和数据分析中非常有用。
python复制def main(s1, s2, *s3):
if s2 not in s1:
return False
for s in s3:
if s not in s1:
return False
return True
使用场景:比如检查一段文本是否包含所有关键词,或者验证用户输入是否满足多个条件。
注意:这个函数是大小写敏感的,如果需要不区分大小写,可以先将所有字符串转为统一大小写再比较。
优化建议:对于大量字符串检查,可以考虑使用集合操作来提高效率:
python复制def main(s1, s2, *s3):
return set([s2]+list(s3)).issubset(set(s1))
3. 数学计算与验证
3.1 圆面积计算
这个函数计算圆的面积,同时进行了严格的参数验证。
python复制from math import pi as PI
def main(r):
if type(r) not in [int,float] or r<=0:
return '参数必须是大于0的整数或实数'
return round(PI*r*r,2)
关键点:
- 使用math模块的pi常量保证精度
- 验证参数类型和范围
- 结果保留两位小数
常见错误:忘记检查参数是否为数字类型,或者没有处理负数情况。
3.2 棋盘米粒问题
这是一个经典的数学问题,计算棋盘上米粒的总数。
python复制def main(n):
return pow(2,pow(n,2))-1
数学原理:每个格子的米粒数是前一个的两倍,n×n棋盘的总米粒数是2^(n²)-1。
提示:这个结果增长非常快,n=8时结果就已经是一个20位数了。
4. 列表与数据处理
4.1 数字列表组合最大值
这个函数将列表中的数字组合成可能的最大数。
python复制from itertools import permutations
def main(lst):
alist=list(map(str,lst))
alist.sort(reverse=True)
return int(''.join(alist))
算法思路:
- 将所有数字转为字符串
- 按字典序降序排列
- 拼接字符串并转为整数
优化空间:对于非常大的列表,permutations方法可能效率不高,可以考虑自定义排序规则。
4.2 查找出现次数最多的元素
这个函数找出列表中出现次数最多的元素,次数相同时返回最大的那个。
python复制def main(lst):
adict={}
for l in lst:
adict[l]=adict.get(l,0)+1
alist=list(adict.items())
alist.sort(key=lambda x:x[0],reverse=True)
alist.sort(key=lamb
