Python—编程题

news/2024/5/6 23:46:25/文章来源:https://blog.csdn.net/weixin_38938108/article/details/130682816

文档结构

  • 练习题

练习题

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 =[x for x in list_a if x%2==1],[x for x in list_a if x%2==0]
>>> part_js
[11, 45, 17, 19, 21, 59]
>>> part_os
[22, 76, 34, 28]
>>> 

2、编写程序,输出给定范围序列内的所有质数;
答案:此处使用 lamda表达式,all()函数以及 filter 函数实现;

start_n = int(input("请输入序列起始值:"))
end_n = int(input("请输入序列终止值:"))
iter_rt = filter(lambda x: all(x % y != 0 for y in range(2, x)), range(start_n, end_n))
list_rt = list(iter_rt)
print(list_rt)# 结果输出
请输入序列起始值:20
请输入序列终止值:70
[23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67]Process finished with exit code 0

此处也可以使用常规的循环方式实现:


start_n = 20
stop_n = 70
list_rt = list()
for x in range(start_n, stop_n + 1):flag = Truefor y in range(2, x):if x % y == 0:flag = Falsebreakif flag:list_rt.append(x)print(list_rt)

3、编写程序输出前10个斐波那契数列;
答案:此处使用列表推导式实现;

fibo = [0, 1]
[fibo.append(fibo[-2] + fibo[-1]) for i in range(0,8)]
print(fibo)# 结果输出
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]Process finished with exit code 0

扩展:该题也可以考虑使用递归函数来实现,参数支持2种类型,一种按照序列数来输入,一种按照阈值范围来确定;
实现:按照递归函数和参数名称来赋值;

# coding=utf-8fibo = [0, 1]def queryFibo(count=0, stop_n=0):if count:if len(fibo) < count:fibo.append(fibo[-2] + fibo[-1])return queryFibo(count=count)else:return fiboelif stop_n:if (fibo[-2] + fibo[-1]) <= stop_n:fibo.append(fibo[-2] + fibo[-1])return queryFibo(stop_n=stop_n)else:return fiboqueryFibo(count=11)
print(fibo)
queryFibo(stop_n=60)
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 finished with exit code 0

4、编写程序判断一个数字是否为阿姆斯特朗数(Armstrong),
说明:如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数,如下所示:
在这里插入图片描述
扩展:此处可以编码实现输出前固定项的Armstrong 或者在某个范围内符合Armstrong特征的值;

A:定义函数selectArmstrong 实现 Armstrong 值的判断

def selectArmstrong(input_n: int) -> bool:len_n = len(str(input_n))split_n = [int(x) ** len_n for x in str(input_n)]sum_n = sum(split_n)return True if input_n == sum_n else False

说明:这里使用到了列表推导式、三元表达式、列表求和操作;

B:定义函数 getArmstrong 获取 Armstrong值;要不输入最大边界值,要不输入符合的数据项个数;


def getArmstrong(count=0, start_n=1, stop_n=1):if count >= 1 and len(list_rt) < count:if selectArmstrong(start_n):list_rt.append(start_n)return getArmstrong(start_n=start_n + 1, count=count)elif start_n <= stop_n:if selectArmstrong(start_n):list_rt.append(start_n)return getArmstrong(start_n=start_n + 1, stop_n=stop_n)

说明:此处使用递归函数计算符合特殊的数值;

C:定义结果列表和 输出逻辑:

list_rt = list()
getArmstrong(count=12)
print(list_rt)# 输出结果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371]Process finished with exit code 0

方法二:使用列表推导式实现,selectArmstrong函数公用;

list_rt = list()
start_n, stop_n = 11, 390
[list_rt.append(x) for x in range(start_n, stop_n) if selectArmstrong(x)]print(list_rt)# 结果输出
[153, 370, 371]Process finished with exit code 0

5、编码实现一行代码展开列表 [[1,2],[3,4],[5,6]],得到新的列表 [1,2,3,4,5,6]?
答案:列表推导式实现:

>>> 
>>> list_1=[[1,2],[3,4],[5,6]]
>>> list_2=[j for i in list_1 for j in i]
>>> list_2 
[1, 2, 3, 4, 5, 6]
>>>

6、编码实现 str_a = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"?
答案:先将字符串转换为集合,在转换为列表,最好排序;

>>> str_a = "ajldjlajfdljfddd" 
>>> list_a=list(set(str_a))
>>> list_a.sort()
>>> str_b="".join(list_a)
>>> str_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_a=list(dict.keys())
>>> list_a.sort(reverse=False)
>>> for x in list_b:
...     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_b=sorted(dict_a.items(),key=lambda i:i[0],reverse=False)
>>> list_b
[('age', 18), ('city', '深圳'), ('name', 'zs'), ('tel', '1362626627')]
>>> 
>>> for y in list_b:
...     dict_b[y[0]]=y[0]
... 
>>> 
>>> 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=[]def sortList(var:list):if len(var)>0:min_n=min(var)list_ll.append(min_n)var.remove(min_n)sortList(var)return list_llprint(sortList(list_aa))

9、代码举例说明如何交换两个数值?
代码实现:

>>> 
>>> num_1,num_2=11,22
>>> print(num_1,num_2)
11 22
>>> num_1,num_2=num_2,num_1
>>> print(num_1,num_2)
22 11
>>>

10、代码举例说明如何实现列表去重?
实现方式:先转为集合,再转为列表,代码如下:

>>> list_a=["aaa","bbb","aaa",11,22,33,33]
>>> set_a=set(list_a)
>>> print(set_a)
{33, 11, 22, 'aaa', 'bbb'}
>>> list_b=list(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 的阶乘;
实现A:循环方式

def getfactor(stop_n):curr_v = 1for x in range(1, stop_n + 1):curr_v *= xreturn curr_v

实现B:递归方式
说明:递归方式有递归深度限制;

def getfactor(stop_n):if stop_n == 1:return 1elif stop_n > 1:return stop_n * getfactor(stop_n=stop_n - 1)

14、编码实现 1! + 2!+ 3! + …n! 之和;
实现A:递归计算,此处复用阶乘函数 getfactor;

def sumfactor(stop_n):if stop_n == 1:return 1elif stop_n > 1:return getfactor(stop_n) + sumfactor(stop_n - 1)

实现B:循环实现

def sumfactor(stop_n: int):sum_v, curr_v = 0, 1if stop_n == 1:sum_v = 1elif stop_n > 1:for x in range(1, stop_n + 1):curr_v *= xsum_v += curr_vreturn sum_v

说明:这种实现方式代码简单,而且就有些优雅了;

15、编码计算2个数的最大公约数和最小公共倍数;
答案;

在这里插入代码片

16、编写函数判断输入的年份是否为闰年;
说明:闰年的判断规则为 非100倍数的年份,可以被4整除;100倍数的年份可以被400整除;

def selectLeapYear(year_v: int):if (year_v % 4 == 0 and year_v % 100 != 0) or (year_v % 400 == 0):return Trueelse:return False

17、编码实现键盘输入的值进行因式分解,如 120 = 2* 2* 235 ;
分析:进行分解时,当除数 大于 被除数的一半时无需再进行分解;


t = 120
i = 2
list_rt = list()
while True:if i >= (t / 2):list_rt.append(t)breakif t % i == 0:list_rt.append(i)t /= ielse:i += 1print(f"t={t},i={i}")print(list_rt)

18、编码求解:假设有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
分析:列出每个月的兔子数值,发现类似于斐波那契数列,1,1,2,3,5,8,13,21…

list_rt = [1, 1]def getfibo(month_n: int):if month_n <= 2:return list_rt[month_n - 1]elif len(list_rt) >= month_n:return list_rt[-1]else:list_rt.append(list_rt[-2] + list_rt[-1])return getfibo(month_n)

19、编码计算一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
分析:


# coding=utf-8def totalPath(level):sum_v = 100curr_l = 100if level == 1:return sum_v, curr_l / 2else:for x in range(2, level + 1):sum_v += curr_lcurr_l /= 2return sum_v, curr_l/2print(totalPath(4))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_302317.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apollo oracle适配

前言&#xff1a;公司数据库统一切换为oracle&#xff0c;减少部署mysql&#xff0c;现需要将Apollo的数据库做oracle适配&#xff0c;当前使用版本为Apollo2.0.0&#xff0c;网上找到最新版本的适配oracle的版本也仅为1.4.0&#xff0c;现决定自己适配。 部分参考了官方介绍的…

linux内核篇-文件系统(硬盘、虚拟文件系统、文件缓存)

文件系统的意义 之前说的都是在进程在物理内存保存的数据&#xff0c;内存就像一个纸箱子&#xff0c;仅仅是一个暂存数据的地方&#xff0c;而且空间有限。如果我们想要进程结束之后&#xff0c;数据依然能够保存下来&#xff0c;就不能只保存在内存里&#xff0c;而是应该保存…

Linux环境基础开发工具

目录 Linux软件包管理器yum Linux开发工具 文本编辑器vi、vim vim的基本概念 vim操作 Linux编译器-gcc\g使用 函数库分为动态库和静态库 Linux调试器gdb使用 在gdb模式下的命令 Linux软件包管理器yum yum怎么说呢&#xff1f;就相当我们手机里的应用商店。我们需要安…

本地服务器与云服务器哪个好?

本地服务器和云服务器是企业可以使用的两种不同的服务器设置。主要区别在于本地服务器托管&#xff0c;第三方提供商托管云服务器。那么&#xff0c;本地服务器和云服务器哪个更好呢&#xff1f; 接下来&#xff0c;将带大家讨论本地服务器和云服务器的优缺点&#xff0c;并帮…

系统设计基础-大型网站通用架构模式

文章目录 一.何谓模式二.通用架构模式1.分层2.分割3.分布式4.集群5.缓存6.异步处理7.冗余备份8.自动化9.安全 本文主要参考自《大型网站技术架构&#xff1a;核心原理与案例分析》一书第二章节和其他网络文章&#xff0c;如有遗漏或错误&#xff0c;还望海涵并指出。谢谢&#…

​ NISP一级备考知识总结之信息安全概述、信息安全基础

参加每年的大学生网络安全精英赛通过初赛就可以嫖一张 nisp&#xff08;国家信息安全水平考试&#xff09; 一级证书&#xff0c;nisp 一级本身没啥考的价值&#xff0c;能白嫖自然很香 1.信息安全概述 信息与信息技术 信息概述 信息奠基人香农认为&#xff1a;信息是用来消…

在Ubuntu 22.04 LTS Jammy Linux 系统上安装MySQL

在Ubuntu 22.04 LTS Jammy Linux 系统上安装MySQL 1. Update Apt Package Index2. Install MySQL Server & client on Ubuntu 22.043. To Check the version4. Run the Security script to secure MySQL5. Login Database Server as the root user6. Manage MySQL service7…

mysql数据库的表约束

表的约束 5.1&#xff1a;表的约束的概念 定义&#xff1a; 数据库表约束是用于定义和实施数据完整性的规则或条件。它们被应用于数据库表中的列&#xff0c;以确保数据的一致性、有效性和准确性。表约束可以强制执行特定的规则&#xff0c;限制数据的插入、更新或删除操作&…

ESP32-C2系列开发板简介

C2是一个芯片采用4毫米x 4毫米封装&#xff0c;与272 kB内存。它运行框架&#xff0c;例如ESP-Jumpstart和ESP造雨者&#xff0c;同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统&#xff0c;受到了全球用户的信赖。它由支持Espressif以及所有…

python3 爬虫相关学习3:response= requests.get(url)的各种属性

目录 1 requests.get(url) 的各种属性&#xff0c;也就是response的各种属性 2 下面进行测试 2.1 response.text 1.2 response.content.decode() 1.2.1 response.content.decode() 或者 response.content.decode("utf-8") 1.2.2 response.content.decode(…

C++类和对象再探

文章目录 const成员再谈构造函数成员变量的定义函数体内赋值初始化列表 隐式类型转换explicitstatic成员 const成员 我们知道在调用类的成员函数时,会有一个默认的this指针且这个this指针时不可以被修改的,例如在日期类中,会有隐式的Date * const this;注意这里默认会在this前…

Flutter仿写微信导航栏快速实现页面导航

文章目录 前言使用TabBar实现TabBar介绍TabBar的重要属性说明TabBarView介绍TabBarView的重要属性TabBar总结TabBar实现底部导航的例子 BottomNavigationBar实现BottomNavigationBar介绍BottomNavigationBar实现底部导航栏的例子 总结BottomNavigationBarTabBar根据实际情况选择…

【Vue基础】Element案例学习-智能学习辅助系统

一、效果展示 初步设计一个系统&#xff0c;有目录、搜索栏、表格操作等。 二、参考代码 主要关注上图“App.vue”和“BtestView.vue”两个文件的代码 1、App.vue <template><div ><!-- <h1>{{ message }}</h1> --><!-- <element-view&…

暴涨700w播放,星穹铁道恰饭频频登上B站爆款热榜!

B站作为现在年轻一代聚集的多元化社区&#xff0c;游戏内容则是社区内受众较为广泛的存在&#xff0c;而星铁作为面向年轻群体的回合制游戏&#xff0c;自然是赢得B站核心用户群体的青睐。 4月26日&#xff0c;暌违已久的手游《崩坏&#xff1a;星穹铁道》&#xff08;后文简称…

JavaEE(系列6) -- 多线程(解决线程不安全系列1-- 加锁(synchronized)与volatile)

首先我们回顾一下上一章节引起线程不安全的原因 本质原因:线程在系统中的调度是无序的/随机的(抢占式执行) 1.抢占式执行 2.多个线程修改同一个变量. 一个线程修改一个变量>安全 多个线程读取同一个变量>安全 多个线程修改不同的变量>安全 3.修改操作,不是原子的.(最…

Python带你实现批量自动点赞小程序

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 所用知识点: 动态数据抓包 requests发送请求 json数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests 请求模块 &#xff0c;第三方&#xff0c;需安装 win R 输入cmd 输入安装命令 pip inst…

初步认识性能测试和完成一次完整的性能测试

上一篇博文主要通过两个例子让测试新手了解一下测试思想&#xff0c;和在做测试之前应该了解人几点&#xff0c;那么我们在如何完成一次完整的性能测试呢&#xff1f; 测试报告是一次完整性能测试的体现&#xff0c;所以&#xff0c;这里我给出一个完整的性能测试报告&#xff…

springBoot中使用redis实现分布式锁实例demo

首先 RedisLockUtils工具类 package com.example.demo.utils;import org.junit.platform.commons.util.StringUtils; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.red…

SAP入门到放弃系列之需求管理的基本要素

需求管理目标&#xff1a; 一般而言&#xff0c;生产计划&#xff08;PP&#xff09;的总体目标&#xff0c;特别是需求管理的总体目标是通过减少以下内容来更好地为客户服务&#xff1a; 补货提前期存货成本 需求管理的要素&#xff1a; 需求管理工作的主要要素广义上可分…

❤ cannot read properties of null(reading appendChild)解决办法

❤ 操作元素报&#xff1a;cannot read properties of null(reading appendChild)解决办法 1、场景&#xff1a; 写的一个js渲染&#xff0c;但是出了个小问题&#xff0c;cannot read properties of null(reading appendChild)报错。 <div id"divps" class&qu…