Python—练习题

news2025/1/20 10:46:46

文档结构

  • 练习题

练习题

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

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-8

fibo = [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 fibo
    elif stop_n:
        if (fibo[-2] + fibo[-1]) <= stop_n:
            fibo.append(fibo[-2] + fibo[-1])
            return queryFibo(stop_n=stop_n)
        else:
            return fibo


queryFibo(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_ll

print(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)返回的结果?
代码实现:

在这里插入代码片

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JWT(Json Web Token)的原理、渗透与防御

&#xff08;关于JWT kid安全部分后期整理完毕再进行更新~2023.05.16&#xff09; JWT的原理、渗透与防御 目录 JWT的原理、渗透与防御含义原理JWT的起源传统session认证问题token与session区别JWT的结构与内容 JWT的攻击和渗透敏感信息泄露空密钥破解密钥爆破CVE-2019-7644 J…

BFT 最前线 |文心一言推出内测专用独立App,谷歌发布 AI 网络安全套件,腾讯机器人业务新突破:自研灵巧手与机械臂首次亮相

文 | BFT机器人 01 科大讯飞将发布星火认知大模型 百度聊天机器人文心一言已经启动邀测一个多月。现在网友发现&#xff0c;文心一言已经推出了内测专用独立App&#xff0c;目前仅提供安卓版。用户可以通过键盘打字输入问题&#xff0c;也可以通过语音方式输入问题&#xff0c…

JavaScript简介及常用语法

简介 JavaScript 是互联网上最流行的脚本语言&#xff0c;这门语言可用于 HTML 和 web &#xff0c;更可广泛用于服务器、 PC 、 笔记本电脑、平板电脑和智能手机等设备。 JavaScript 是一种轻量级的编程语言。 JavaScript 是可插入 HTML 页面的编程代码。 JavaScrip…

基于 KONOS 编写一个部门级的前端框架

01 什么是 konos 现在对于前端框架的定义越来越广泛了&#xff0c;在前端工程化中的某一个环节的特定方案&#xff0c;都可泛称为一个前端框架。 konos 是一个插件化的前端框架基座&#xff0c;如果你对 umi 有所了解的话&#xff0c;可以把它当作一个没有任何功能的 umi core …

RocketMQ单机环境部署

文章目录 1. 前置条件2. 下载源码3. 编译源码4. Rocket MQ启动JVM参数配置5. 启动RocketMQ6. 安装DashBoard7. 测试RocketMQ9. 查看dashboard情况 不太懂RocketMQ基本概念的看我 这篇博客 1. 前置条件 &#xff08;看我这篇博客&#xff0c;注意版本要改成3.2.*&#xff0c;m…

神经网络:Zero2Hero 2

Zero → \to → Hero : 2 接上篇&#xff0c;Zero → \to → Hero : 1&#xff0c;进一步的扩展模型&#xff1a; 增加输入字符序列的长度&#xff0c;通过多个字符预测下一个字符的概率分布增加模型的深度&#xff0c;通过多层的MLP来学习和预测字符的生成概率增加嵌入层&…

深度学习04-CNN经典模型

简介 卷积神经网络&#xff08;CNN&#xff09;是深度学习中非常重要的一种网络结构&#xff0c;它可以处理图像、文本、语音等各种类型的数据。以下是CNN的前4个经典模型 LeNet-5 LeNet-5是由Yann LeCun等人于1998年提出的&#xff0c;是第一个成功应用于手写数字识别的卷积…

【数据结构】线性表之链表

目录 前言一、链表的定义二、链表的分类1. 单向和双向2. 带头和不带头3. 循环和不循环4. 常用&#xff08;无头单向非循环链表和带头双向循环链表&#xff09; 三、无头单向非循环链表的接口及实现1. 单链表的接口2. 接口的实现 四、带头双向循环链表接口的及实现1. 双向链表的…

磺酸基-Cy5 羧酸Sulfo-Cy5 COOH分子式C32H37N2KO8S2

Sulfo CY5 COOH是一种有机化合物&#xff0c;属于荧光染料。它具有荧光、稳定、水溶性等特点&#xff0c;因此被应用于分析化学、生物技术、药物研发等领域。Sulfo CY5 COOH的分子式为C32H37N2KO8S2&#xff0c;分子量为680.87。它的荧光波长为670nm&#xff0c;可以通过荧光显…

如何在AD中添加自定义材料单模板

AD默认的材料单格式和常用的格式有点区别&#xff0c;为了减少在材料单格式编辑的工作&#xff0c;决定添加自定义模板到AD的模板中。 1.查找AD模板的安装位置 在AD菜单Reports中&#xff0c;找到“Bill of materials”菜单&#xff0c; 点击后&#xff0c;弹出的窗口中包含了…

Kubernets1.20部署Redis7.0集群6节点三主三从(完整版)-2023.5.13

目录 一、产品选型二、草图三、部署1、安装NFS服务1&#xff09;NFS Server端安装NFS2&#xff09;创建NFS 共享点3&#xff09;启动rpcbind、nfs服务4&#xff09;验证服务配置 2、创建持久卷PVC1&#xff09;创建ServiceAccount账号2&#xff09;创建provisioner3&#xff09…

vite入坑之路:react+vite动态导入报错@vite-ignore的解决方法

正常的动态组件导入方式 webpack搭建的项目&#xff0c;不管是react还是vue通常引入动态组件基本这么写&#xff1a; const url import(../pages/${locale}) // vite不支持or const url import(../pages/${locale}/index.jsx) // vite不支持这在vite架构中&#xff0c;一般…

Vue3+vite环境变量配置

在项目开发中&#xff0c;通常来说&#xff0c;不同的环境会有不同的请求api接口&#xff0c;这就需要修改配置&#xff0c;才能满足对应的环境。所以这里就使用了环境变量。环境变量就是在不同的环境中使用不同的变量值。 # 环境变量文件(.env) 在项目根目录&#xff08;和sr…

TCP协议和相关特性

1.TCP协议的报文结构 TCP的全称为&#xff1a;Transmission Control Protocol。 特点: 有连接可靠传输面向字节流全双工 下面是TCP的报文结构&#xff1a; 源端口和目的端口&#xff1a; 源端口表示数据从哪个端口传输出来&#xff0c;目的端口表示数据传输到哪个端口去。…

FPGA_学习_03_第一个FPGA程序流水灯

学习编程&#xff0c;最重要永远就是动手&#xff0c;本文将在开发板上实现FPGA的“Hello world”→流水灯。本文主要目的是熟悉在Vivado上从零到程序运行起来的基本开发流程。 1 硬件电路介绍 本人购买的开发板接在PL端的只有2个LED灯&#xff0c;刚好达到流水灯的最低要求。…

今年这情况,大家多一手准备吧......

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

ASEMI代理MAX5048BAUT+T原装ADI车规级MAX5048BAUT+T

编辑&#xff1a;ll ASEMI代理MAX5048BAUTT原装ADI车规级MAX5048BAUTT 型号&#xff1a;MAX5048BAUTT 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;SOT-23-6 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;6 工作温度:-40C~125C 类型&a…

npx下载构建nuxt3开发模板失败的解决方案

在搭建nuxt3项目开发的时候&#xff0c;安装nuxt3开发模板的时候&#xff0c;使用命令&#xff1a; npx nuxi init my-app 会出出现一下错误&#xff1a; This is related to npm not being able to find a file. 发生上述错误是因为您有一个未正确安装的依赖项。 以下是解决…

大央企的“中央厨房”,泰裤辣

本文来源&#xff1a;特大号 作者&#xff1a;特大妹 最近两年&#xff0c;大央企大国企在数字化转型中&#xff0c;特热衷成立“中央厨房”。 有的中央厨房&#xff0c;单独挂牌为“数科公司”&#xff0c;有的中央厨房&#xff0c;升级为集团数字化转型的一级部门。 把之前各…

“警”彩集结|北峰通信亮相11届警博会,多场景助力警务智能化

2023年5月11日-14日&#xff0c;第十一届中国国际警用装备博览会(警博会)在北京首钢会展中心隆重召开。“警博会”作为中国乃至亚太地区最具影响力、最权威的警用装备盛会&#xff0c;代表了中国警用装备行业的最高水平。北峰通信作为服务公共安全实战30余年的企业&#xff0c;…