Python—编程题
文档结构练习题练习题1、使用一行代码实现给定列表的奇偶数分离list_a [11, 22, 45,17,19,21,76,34,28,59]答案此处使用 列表推导式实现list_a[11,22,45,17,19,21,76,34,28,59]part_js,part_os[xforxinlist_aifx%21],[xforxinlist_aifx%20]part_js[11,45,17,19,21,59]part_os[22,76,34,28]2、编写程序输出给定范围序列内的所有质数答案此处使用 lamda表达式all()函数以及 filter 函数实现start_nint(input(请输入序列起始值))end_nint(input(请输入序列终止值))iter_rtfilter(lambdax:all(x%y!0foryinrange(2,x)),range(start_n,end_n))list_rtlist(iter_rt)print(list_rt)# 结果输出请输入序列起始值20请输入序列终止值70[23,29,31,37,41,43,47,53,59,61,67]Process finishedwithexit code0此处也可以使用常规的循环方式实现start_n20stop_n70list_rtlist()forxinrange(start_n,stop_n1):loop_flagTrueforyinrange(2,int(x/2)1):ifx%y0:loop_flagFalse# 当该整数可以被别的数整除时确定不是质数breakifloop_flag:# 如果循环完确定该数据是质数则将该数据加入到列表里list_rt.append(x)# 打印质数集合print(list_rt)3、编写程序输出前10个斐波那契数列答案此处使用列表推导式实现fibo[0,1][fibo.append(fibo[-2]fibo[-1])foriinrange(0,8)]print(fibo)# 结果输出[0,1,1,2,3,5,8,13,21,34]Process finishedwithexit code0扩展该题也可以考虑使用递归函数来实现参数支持2种类型一种按照序列数来输入一种按照阈值范围来确定实现按照递归函数和参数名称来赋值# codingutf-8fibo[0,1]defqueryFibo(count0,stop_n0):ifcount:iflen(fibo)count:fibo.append(fibo[-2]fibo[-1])returnqueryFibo(countcount)else:returnfiboelifstop_n:if(fibo[-2]fibo[-1])stop_n:fibo.append(fibo[-2]fibo[-1])returnqueryFibo(stop_nstop_n)else:returnfibo queryFibo(count11)print(fibo)queryFibo(stop_n60)print(fibo)# 输出结果[0,1,1,2,3,5,8,13,21,34,55][0,1,1,2,3,5,8,13,21,34,55]Process finishedwithexit code04、编写程序判断一个数字是否为阿姆斯特朗数(Armstrong)说明如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数如下所示扩展此处可以编码实现输出前固定项的Armstrong 或者在某个范围内符合Armstrong特征的值A定义函数selectArmstrong 实现 Armstrong 值的判断defselectArmstrong(input_n:int)-bool:len_nlen(str(input_n))split_n[int(x)**len_nforxinstr(input_n)]sum_nsum(split_n)returnTrueifinput_nsum_nelseFalse说明这里使用到了列表推导式、三元表达式、列表求和操作B定义函数 getArmstrong 获取 Armstrong值要不输入最大边界值要不输入符合的数据项个数defgetArmstrong(count0,start_n1,stop_n1):ifcount1andlen(list_rt)count:ifselectArmstrong(start_n):list_rt.append(start_n)returngetArmstrong(start_nstart_n1,countcount)elifstart_nstop_n:ifselectArmstrong(start_n):list_rt.append(start_n)returngetArmstrong(start_nstart_n1,stop_nstop_n)说明此处使用递归函数计算符合特殊的数值C定义结果列表和 输出逻辑list_rtlist()getArmstrong(count12)print(list_rt)# 输出结果[1,2,3,4,5,6,7,8,9,153,370,371]Process finishedwithexit code0方法二使用列表推导式实现selectArmstrong函数公用list_rtlist()start_n,stop_n11,390[list_rt.append(x)forxinrange(start_n,stop_n)ifselectArmstrong(x)]print(list_rt)# 结果输出[153,370,371]Process finishedwithexit code05、编码实现一行代码展开列表 [[“aa”, “bb”], [“cc”, “dd”], [“ee”, “ff”]]得到新的列表 [‘aa’, ‘bb’, ‘cc’, ‘dd’, ‘ee’, ‘ff’]答案列表推导式实现nest_list[[aa,bb],[cc,dd],[ee,ff]]list_r[yforxinnest_listforyinx]print(list_r)6、编码实现 str_a “ajldjlajfdljfddd”去重并从小到大排序输出adfjl答案先将字符串转换为集合在转换为列表最好排序str_aajldjlajfdljfdddlist_alist(set(str_a))print(list_a)list_a.sort()## 该函数不返回任何值直接修改源列表的元素顺序print(list_a)list_b.join(list_a)print(list_b)说明list.sort() 函数没有返回值所以不能直接将其赋值给另外一个变量7、编码实现 字典 dict_a{“name”:“zs”,“age”:18,“city”:“深圳”,“tel”:“1362626627”} 根据键从小到大排序?方式A取出键值排序后赋值给新的字典dict_a{name:zs,age:18,city:深圳,tel:1362626627}dict_new{}list_alist(dict.keys())list_a.sort(reverseFalse)forxinlist_a:...dict_new[x]dict[x]...dict_new{age:18,city:深圳,name:zs,tel:1362626627}方式B使用内置函数排序生成新的列表dict_a{name:zs,age:18,city:深圳,tel:1362626627}dict_b{}list_bsorted(dict_a.items(),keylambdai:i[0],reverseFalse)list_b[(age,18),(city,深圳),(name,zs),(tel,1362626627)]foryinlist_b:...dict_b[y[0]]y[1]...dict_b{age:18,city:深圳,name:zs,tel:1362626627}8、编码 list[2,3,5,4,9,6]从小到大排序不许用sort输出[2,3,4,5,6,9]实现逻辑递归将原列表最小值赋值给新列表list_aa[22,11,33,55,22,77,99,88]list_ll[]defsortList(var:list):iflen(var)0:min_nmin(var)list_ll.append(min_n)var.remove(min_n)sortList(var)returnlist_llprint(sortList(list_aa))写法二按照 for 循环list_a[99,11,23,15,27,38,57]defsortList(l_input:list):list_blist()iflen(l_input)0:returnNoneforxinrange(0,len(l_input)):list_minmin(l_input)list_b.append(list_min)l_input.remove(list_min)returnlist_bprint(sortList(list_a))方式三冒泡排序list_a[11,22,45,17,19,21,76,34,28,59]forxinrange(0,len(list_a)):foryinrange(x1,len(list_a)):iflist_a[y]list_a[x]:templist_a[x]list_a[x]list_a[y]list_a[y]tempprint(list_a)说明该方式中循环比较元素第一个和后面所有元素的大小将最小的挪到第一个位置9、代码举例说明如何交换两个数值代码实现num_1,num_211,22print(num_1,num_2)1122num_1,num_2num_2,num_1print(num_1,num_2)221110、代码举例说明如何实现列表去重实现方式先转为集合再转为列表代码如下list_a[aaa,bbb,aaa,11,22,33,33]set_aset(list_a)print(set_a){33,11,22,aaa,bbb}list_blist(set_a)print(list_b)[33,11,22,aaa,bbb]11、字符串a “not 404 found 张三 99 深圳”每个词中间是空格用正则过滤掉英文和数字最终输出张三 深圳?在这里插入代码片12、x“abc”,y“def”,z[“d”,“e”,“f”],分别求出x.join(y)和x.join(z)返回的结果代码实现在这里插入代码片13、编码实现 n 的阶乘for 循环defgetfactor(stop_n):curr_v1forxinrange(1,stop_n1):curr_v*xreturncurr_vwhile 循环defgetFactor(stopNum:int):start1result1whilestartstopNum:result*start start1returnresultprint(getFactor(5))递归方式说明递归方式有递归深度限制defgetfactor(stop_n):ifstop_n1:return1elifstop_n1:returnstop_n*getfactor(stop_nstop_n-1)defgetFactor(stopNum:int):start1result1ifstopNumstart:returnstopNum*getFactor(stopNum-1)else:returnresultprint(getFactor(4))14、编码实现 1! 2! 3! …n! 之和实现A递归计算此处复用阶乘函数 getfactordefsumfactor(stop_n):ifstop_n1:return1elifstop_n1:returngetfactor(stop_n)sumfactor(stop_n-1)实现B循环实现defsumfactor(stop_n:int):sum_v,curr_v0,1ifstop_n1:sum_v1elifstop_n1:forxinrange(1,stop_n1):curr_v*x sum_vcurr_vreturnsum_v说明这种实现方式代码简单而且就有些优雅了15、编码计算2个数的最大公约数和最小公共倍数答案在这里插入代码片16、编写函数判断输入的年份是否为闰年说明闰年的判断规则为 非100倍数的年份可以被4整除100倍数的年份可以被400整除defselectLeapYear(year_v:int):if(year_v%40andyear_v%100!0)or(year_v%4000):returnTrueelse:returnFalse17、编码实现键盘输入的值进行因式分解如 120 2* 2* 235 分析进行分解时当除数 大于 被除数的一半时无需再进行分解t120i2list_rtlist()whileTrue:ifi(t/2):list_rt.append(t)breakift%i0:list_rt.append(i)t/ielse:i1print(ft{t},i{i})print(list_rt)18、编码求解假设有一对兔子从出生后第3个月起每个月都生一对兔子小兔子长到第三个月后每个月又生一对兔子假如兔子都不死问每个月的兔子总数为多少分析列出每个月的兔子数值发现类似于斐波那契数列1,1,2,3,5,8,13,21…list_rt[1,1]defgetfibo(month_n:int):ifmonth_n2:returnlist_rt[month_n-1]eliflen(list_rt)month_n:returnlist_rt[-1]else:list_rt.append(list_rt[-2]list_rt[-1])returngetfibo(month_n)19、编码计算一球从100米高度自由落下每次落地后反跳回原高度的一半再落下求它在第10次落地时共经过多少米第10次反弹多高分析# codingutf-8deftotalPath(level):sum_v100curr_l100iflevel1:returnsum_v,curr_l/2else:forxinrange(2,level1):sum_vcurr_l curr_l/2returnsum_v,curr_l/2print(totalPath(4))

相关新闻

CPU中央处理器(下)

CPU中央处理器(下)

控制器 控制器的输入和输出输入信号 (1)时钟 完成每个操作都需要占用一定的时间;各个操作之间有先后次序之分 因此控制单元需要在时钟的控制下按照一定的顺序发出控制信号。 (2)指令寄存器( IR ) 指令寄存器的操作码字段决定了指令…

2026/5/17 8:52:42 阅读更多 →
CAS原理

CAS原理

CAS是compare and swap的缩写,即我们所说的比较交换。cas是一种基于锁的操作,而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住,等一个之前获得锁的线程释放锁之后,下一个线程才可以访问。而乐观锁采取了一种宽泛…

2026/7/4 16:51:36 阅读更多 →
教程 | 如何动用智慧安装NavicatPremium 16

教程 | 如何动用智慧安装NavicatPremium 16

相信许多学习大数据相关专业的同学肯定会学习数据库的相关知识,在学习的同时有一个优秀的数据库管理软件就尤为的重要,但是市面上大多数数据库软件都要收费,小则几十动则几百,想要一次性买断甚至要上千,那么今天小编就…

2026/7/5 3:16:33 阅读更多 →

最新新闻

如何用ComfyUI-KJNodes解决AI工作流复杂性问题:实战指南

如何用ComfyUI-KJNodes解决AI工作流复杂性问题:实战指南

如何用ComfyUI-KJNodes解决AI工作流复杂性问题:实战指南 【免费下载链接】ComfyUI-KJNodes Various custom nodes for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes 在构建AI图像生成和视频处理工作流时,你是否经常面临…

2026/7/5 21:40:38 阅读更多 →
Apache Tomcat路径等价漏洞CVE-2025-24813:从原理到复现的深度剖析

Apache Tomcat路径等价漏洞CVE-2025-24813:从原理到复现的深度剖析

1. 漏洞概述与影响范围CVE-2025-24813,一个在2025年初披露的Apache Tomcat高危漏洞,其CVSS 3.x评分一度高达9.8分(CRITICAL),被美国网络安全和基础设施安全局(CISA)列入已知被利用漏洞目录。这个…

2026/7/5 21:40:38 阅读更多 →
CMFM模块:基于Mamba的多模态目标检测技术解析

CMFM模块:基于Mamba的多模态目标检测技术解析

1. 项目概述在计算机视觉领域,多模态目标检测一直是研究热点,特别是在复杂环境下的应用场景。传统基于可见光(RGB)的单模态检测系统在恶劣天气条件下(如雨、雾、雪等)性能会显著下降。本文介绍的CMFM(Cross-Modal Feature Fusion …

2026/7/5 21:36:37 阅读更多 →
特效字体翻译中的视觉风格迁移技术解析

特效字体翻译中的视觉风格迁移技术解析

1. 特效字体翻译的视觉困境与行业痛点 在跨境电商和数字营销领域,特效字体(Visual Effects Typography)已经成为产品视觉呈现的核心竞争力。根据2023年亚马逊平台数据显示,带有火焰、金属、霓虹等特效字体的产品主图,其…

2026/7/5 21:36:37 阅读更多 →
大数据原生集群 (Hadoop2.X为核心) 本地测试环境搭建二

大数据原生集群 (Hadoop2.X为核心) 本地测试环境搭建二

上一篇补充小提示 根据上一篇安装好虚拟机和系统之后,在安装软件之前我有两个对于虚拟机的注意点想送给大家,大家可以不看,但是后期在虚拟机的使用上或许对你有帮助 一、在安装配置集群的时候,涉及到不同机器之间有关IP地址的设…

2026/7/5 21:30:36 阅读更多 →
英雄联盟智能助手Seraphine:5分钟快速上手的游戏增强工具

英雄联盟智能助手Seraphine:5分钟快速上手的游戏增强工具

英雄联盟智能助手Seraphine:5分钟快速上手的游戏增强工具 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否厌倦了在英雄联盟中手动查询对手战绩、错过对局接受,或是在BP阶段手忙脚…

2026/7/5 21:26:35 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻