网站大量收购独家精品文档,联系QQ:2885784924

Python实例练习题合集(3).docx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE232

Python求解猴子吃桃问题

任务要求

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

任务分析

根据题意,猴子每天吃掉前一天剩余桃子的一半加一个,到第10天仅剩1个桃子。逆向推导公式为:前一天的桃子数=(当天剩余数+1)×2

例如:

第10天剩余1个→第9天剩余(1+1)×2=4个

第9天剩余4个→第8天剩余(4+1)×2=10个

以此类推,最终得到第一天的桃子总数。

任务实现

方法一:逆推循环法

defmethod1():

peaches=1#第10天的桃子数

fordayinrange(9,0,-1):

peaches=(peaches+1)*2

returnpeaches

print(猴子共摘桃子的个数是:,method1())

说明:从第10天反向循环到第1天,每次计算前一天的桃子数。

方法二:递归算法

defmethod2(day=10):

ifday==1:#递归终止条件:第10天剩1个

return1

return(method2(day-1)+1)*2

print(猴子共摘桃子的个数是:,method2())

说明:递归函数从第10天逐层返回计算到第1天。递归深度为10层,可能在大规模计算时导致栈溢出。

方法三:数学公式法

defmethod3():

return3*(2**9)-2#推导公式:(2^n2)*3/2,n=9天

print(猴子共摘桃子的个数是:,method3())

说明:通过等比数列求和公式可得总桃子数为3*(2^9)-2=1534,适用于快速验证结果。

运行结果

猴子共摘桃子的个数是:1534

进程已结束,退出代码为0

Python实现字母大小写互换

任务要求

1.输入一个包含大小写字母的字符串(如HelloWorld!)

2.将字符串中的大写字母转为小写,小写字母转为大写

3.保留非字母字符不变

任务分析

字母大小写互换的核心逻辑在于:

1.ASCII码差异:大写字母(A-Z)的ASCII码范围为65-90,小写字母(a-z)为97-122,两者相差32。

2.内置函数:Python的str.swapcase()可直接实现该功能。

3.位运算优化:利用异或运算(^32)可快速切换大小写。

任务实现

方法1:使用内置函数swapcase()

defswap_case1(s):

returns.swapcase()

#示例

print(swap_case1(HelloWorld!))#输出:hELLOwORLD!

说明:直接调用字符串的内置方法swapcase(),代码最简洁。

方法2:循环遍历+条件判断

defswap_case2(s):

result=[]

forcharins:

ifchar.islower():

result.append(char.upper())

elifchar.isupper():

result.append(char.lower())

else:

result.append(char)

return.join(result)

#示例

print(swap_case2(HelloWorld!))#输出:hELLOwORLD!

说明:

遍历每个字符,通过islower()和isupper()判断大小写

使用upper()和lower()转换后存入列表

方法3:ASCII码运算

defswap_case3(s):

swapped=[]

forcharins:

ascii_val=ord(char)

if65=ascii_val=90:

swapped.append(chr(ascii_val+32))

elif97=ascii_val=122:

swapped.append(chr(ascii_val-32))

else:

您可能关注的文档

文档评论(0)

夜晚回家 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档