鸡兔同笼问题是一个经典的数学应用题,通过给定的总头数和总腿数来计算鸡和兔的数量。这个问题考察的是对线性方程组的理解和编程实现能力。
设鸡的数量为x,兔的数量为y,根据题意可以列出以下方程组:
这个问题的解法可以分为以下几个步骤:
注意:在循环中加入了提前终止条件i*2>m,这是优化手段。因为当鸡的腿数已经超过总腿数时,后续情况更不可能满足条件。
python复制def main(n, m):
for i in range(1, n+1):
if i*2 + (n-i)*4 == m:
return i, n-i
if i*2 > m:
return '数据不对'
return '数据不对'
这个实现有几点值得注意:
这个问题的核心是在列表中找出所有最大值出现的位置索引。这在数据分析中很常见,比如找出销售数据中最高销售额的所有日期。
python复制def main(lst):
nmax = max(lst)
alist = []
for i in range(len(lst)):
if lst[i] == nmax:
alist.append(i)
return alist
关键点:
提示:如果列表很大,可以考虑使用列表推导式更简洁地实现:
python复制return [i for i, x in enumerate(lst) if x == max(lst)]
这个任务要求在主文件名后添加"_new"后缀,保持扩展名不变。这在文件批量处理时非常有用。
python复制from os.path import splitext
def main(s):
alist = splitext(s)
return alist[0] + '_new' + alist[1]
注意事项:
这个问题要求找出列表中所有三个数的组合,其和等于10。这是LeetCode上经典的两数之和问题的变种。
使用itertools.combinations生成所有可能的三元组组合:
python复制from itertools import combinations
def main(lst):
alist = list(combinations(lst, 3))
blist = []
for i in alist:
if sum(i) == 10:
blist.append(i)
return blist
优化建议:
这个任务要求提取字符串中只出现一次的字符,保持原有顺序。这在文本分析和密码学中有应用。
两种主要实现方式:
python复制from collections import Counter
def main(s):
s1 = ''
for a in s:
if s.count(a) == 1:
s1 += a
return s1
性能考虑:
这个函数需要判断列表中元素的重复情况,返回不同的状态码。这在数据清洗和质量检查中很有用。
python复制def main(lst):
if len(set(lst)) == 1:
return 0
if len(set(lst)) == len(lst):
return 1
return 2
关键点:
这个任务要求规范化字符串中的空格,包括去除两侧空格和合并连续空格。这在文本预处理中很常见。
python复制def main(s):
s = s.strip()
while True:
if s.replace(' ', ' ') == s:
break
s = s.replace(' ', ' ')
return s
优化建议:
这个任务要求找出字符串中最长的连续数字序列。这在日志分析和数据提取中很实用。
使用re.findall()匹配所有数字序列,然后找出最长的:
python复制from re import findall
def main(s):
alist = findall(r'\d+', s)
if not alist:
return '没有数字'
return max(alist, key=len)
注意事项:
这个任务要求计算列表中所有数的最大公约数。这在数学计算和密码学中有应用。
使用math.gcd结合functools.reduce:
python复制from math import gcd
from functools import reduce
def main(lst):
return reduce(gcd, lst)
关键点:
这个任务要求从Word文档中提取包含特定关键词的段落。这在文档自动化处理中很常见。
python复制from docx import Document
def main():
doc = Document('data60.docx')
for para in doc.paragraphs:
if '山东' in para.text and '烟台' in para.text:
return para.text
return -1
注意事项: