[Python学习日记-44] 函数编程的练习(答案更新中)

news2024/10/10 16:22:58

[Python学习日记-44] 函数编程的练习

简介

题目

答案

简介

        本篇是函数编程的练习题,主要用于巩固前面学习的函数内容,建议先自己做一遍,最后再对答案,这样会比较稳固。

题目

1、写函数,计算传入数字参数的和。(动态传参)
2、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
3、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
4、写函数,检查传入字典的每一个 value 的长度,如果大于2,那么仅保留前两个长度的内容(对 value 的值进行截断),并将新内容返回给调用者,注意传入的数据可以是字符串、列表、字典
5、解释闭包的概念
6、写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

例如:[('红心’,2),('梅花',2),('方块',2),...('黑桃A')]

7、写函数,传入 n 个数,返回字典 {'max':最大值,'min':最小值}

例如:min_max(2,5,7,8,4)
返回:{'max':8,'min':2}

8、 写函数,专门计算图形的面积

  • 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
  • 调用函数 area('圆形',圆半径) 返回圆的面积
  • 调用函数 area('正方形',边长) 返回正方形的面积
  • 调用函数 area('长方形',长,宽) 返回长方形的面积
  • 代码模板

def area():
        def 计算长方形面积():
                pass
        def 计算正方形面积():
                pass
        def 计算圆形面积():
                pass

9、 写函数,传入一个参数 n,返回 n 的阶乘

例如:cal(7)
计算 7*6*5*4*3*2*1

10、编写装饰器,为多个的数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

11、生成器和迭代器的区别?
12、生成器有几种方式获取 value?
13、通过生成器写一个日志调用方法,支持以下功能

  • 根据指令向屏幕输出日志
  • 根据指令向文件输出日志
  • 根据指令同时向文件和屏幕输出日志
  • 以上日志格式如下

2017-10-19 22:07:38 [1] test log db backup 3

2017-10-19 22:07:40 [2] user jove login success

注意:其中 [1],[2] 是指日志方法第几次调用,每调用一次输出一条日志

  • 代码结构如下

def logger(filename,channel='file'):
        """

        日志方法
        :param filename:log filename

        :param channel:输出的目的地,屏幕(terminal),文件(file),屏幕+文件(both)
        :return:

        """ 
        ...your code...


# 调用

log_obj = logger(filename="web.log",channel="both")

log_obj.__next__()

log_obj.send('user jove login success')

14、 用 map 来处理字符串列表,把列表中所有人都变成 hanson,比方 jove_hanson

name=['jove','kerry','amy','lucy']

15、 用 filter 函数处理数字列表,将列表中所有的偶数筛选出来

num = [1,3,5,6,7,8]

16、 如下,每个小字典的 name 对回股票名字,shares 对应多少股,price 对应股票的价格

portfolio = [
        {"name":"IBM","shares":100,"price":91.1},
        {"name":"AAPL","shares":50,"price":543.22},

        {"name":"FB","shares":200,"price":21.09},

        {"name":"HPQ","shares":35,"price":31.75},

        {"name":"YHOQ","shares":45,"price":16.35},

        {"name":"ACME","shares":75,"price":115.65},

]

  • 通过明个内置函数可以计算购买每支股票的总价
  • 用 filter 过滤出,单价大于100的股票有哪些

17、有列表 i = ['jove','kerry','amy','lucy','aizza'],请将以字母“a”开头的元素的首字母改为大写字母

18、有列表 i = ['jove','kerry','amy','lucy','aizza'],请以列表中每个元素的第二个字母倒序排序

19、有名为 poetry.txt 的文件,其内容如下,请删除第三行

昔人已乘黄鹤去,此地空余黄鹤楼,
黄鹤一去不复返,白云千载空悠悠,
晴川历历汉阳树,芳草萋萋鹦鹉洲,
日暮乡关何处是?烟波江上使人愁。

 20、有名为 username.txt 的文件,其内容格式如下,写一个程序,判断该文件中是否存在“jove”,如果没有,则将字符串“jove”添加到该文件未尾,否则提示用户该用户已存在

jove

kerry

amy

21、有名为 user_info.txt 的文件,其内容格式如下,写一个程序,删除 id 为100003的行

jove,100001

kerry,100002

amy,100003

22、有名为 user_info.txt 的文件,其内容格式如下,写一个程序,将 id 为100002的用户名修改为kerry zou

jove,100001

kerry,100002

amy,100003

23、写一个计算每个程序执行时间的装饰器

24、lambda 是什么?请说说你曾在什么场景下使用 lambda?

25、写一个摇塞子游戏,要求用户压大小,赔率一赔一。

要求:三个股子,每个般子的值从1-6,摇大小,每次打印摇出来3个股子的值。

答案

1、写函数,计算传入数字参数的和。(动态传参)

def sum_numbers(*args):
    return sum(args)

print(sum_numbers(1,2,3,4,5,6,7,8,9,10))

2、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作

原文件 test1.txt 内容为(编码格式为UTF8):

Hello,Wold!

import os

def modify_file(f_name, old_str, new_str):
    f_new_name = "%s.new" % f_name
    # 读取原文件
    f = open(f_name, 'r', encoding='utf-8')
    # 写入新文件
    f_new = open(f_new_name, 'w', encoding='utf-8')
    for line in f:

        if old_str in line:
            new_line = line.replace(old_str, new_str)
        else:
            new_line = line
        f_new.write(new_line)

    f.close()
    f_new.close()
    # 新文件替换旧文件
    os.replace(f_new_name, f_name)  # mac 使用 rename

modify_file("test1.txt", "Hello", "World")

答案将会陆续更新,可以先自己做做

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

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

相关文章

2.1 App测试与发布指南

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 系统架构2 APP测试范围3 APP发布流程4 发布策略 前言 在当今数字化时代,移动应用程序(APP)和Web应用程序是两种主要的软件交付方式。本文详…

arm imx6ull docker启动失败问题查找与解决 内核配置相关

1、增加POSIX Message qeue:could not get initial namespace: no such file or directory CONFIG_POSIX_MQUEUEy 2、增加namespace failed to set to initial namespace CONFIG_NAMESPACESy 3、创建网络失败,veth配置:docker create endp…

40条经典ChatGPT论文指令,圈定选题和进行论文构思

目录 1、用ChatGPT圈定选题范围2、用ChatGPT生成研究方法和思路3、用ChatGPT扩展论文观点和论证4、用ChatGPT辅助论文结构设计5、如何直接使用ChatGPT4o、o1、OpenAI Canvas6、OpenAI Canvas增强了啥?7、编程功能增强 👇 ChatGPT o1网页入口在文末&#…

光路科技TSN交换机:驱动自动驾驶技术革新,保障高精度实时数据传输

自动驾驶技术正快速演进,对实时数据处理能力的需求激增。光路科技推出的TSN(时间敏感网络)交换机,在比亚迪最新车型中的成功应用,显著推动了这一领域的技术进步。 自动驾驶技术面临的挑战 自动驾驶系统需整合来自雷达…

CentOS系统解压缩.7z后缀的文件

先安装工具 sudo yum install p7zip p7zip-plugins 解压缩 7z x mvtec3d.7z x参数表示解压并保持原有目录结构。 有报错 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (localeen_US.UTF-8,Utf16on,HugeFileson,64 bits,64 CP…

马志威新剧《黑色月光》开播 “海王”梁正贤角色再升级

由优酷、TVB联合出品,77工作室制作的《黑色月光》于10月9日在优酷视频上线播出。该剧由知名导演钟澍佳担任总监制,杨茜尧、马志威等TVB演员主演,故事以公关行业为背景,讲述了职场女性余满月曾被富豪蒋家害得家破人亡,精…

C++ 算法学习——1.8 单调队列算法

单调队列(Monotonic Queue)是一种特殊类型的队列,通常用于解决一些数组或序列相关的问题。和单调栈类似,单调队列也具有一些特定的性质,在解决一些问题时非常有用。以下是关于单调队列的一些重要点: 定义&a…

《14天从0到1学Java》第二天之01Java中的分支结构if语句

Hello,大家好,我是Feri,一枚十多年的程序员,研究生,关注我,且看一个平凡的程序员如何在自我成长,也为各位小伙伴提供编程相关干货知识,希望在自我蜕变的路上,我们一起努力…

解决SqlServer自增主键使用MybatisPlus批量插入报错问题

报错 SqlServer 表中主键设置为自增,会报以下错误。 org.springframework.jdbc.UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获…

深入理解HTTP Cookie

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 HTTP Cookie定义工作原理分类安全性用途 认识 cookie基本格式实验测试 cookie 当我们登录了B站过后,为什么下次访问B站就…

uni-app使用v-show编译成微信小程序的问题

问题 在uni-app使用v-show语法编译成微信小程序会有一个问题 当我们设置成v-show"false" 在Hbuilder X里面确实没有显示 然后运行到 微信开发程序里面 发现显示了出来,说明设置的 v-show"false"没有起作用 解决办法 首先去uniapp官网查看v…

KDTS 实现MySQL至KingbaseES迁移实践

此文章以linux环境实践,KingbaseES一下使用KES代替。 KDTS KDTS工具安装KES时会一起安装,一般存在目录为:ClientTools目录下guitools文件夹中 启动 进入KDTS-WEB下bin目录,执行sh文件 cd /opt/Kingbase/ES/V8/ClientTools/guit…

汽车胶黏剂市场研究:预计2030年全球市场规模将达到67.4亿美元

汽车胶黏剂是指专门用于汽车制造和维修过程中,用于粘接、密封和固定各种汽车部件的化学材料。它们在汽车行业中扮演着关键角色,广泛应用于车身、内饰、玻璃、电子元件和其他组件的粘接与密封。汽车胶黏剂旨在提高汽车的结构强度、耐用性、密封性以及舒适…

【JS】浏览器切换标签页导致计时器不准

现有一段计时器代码 function count() {let n 0const timer setInterval(() > {console.log(n);if (n > 200) {clearInterval(timer)}n}, 10) } count()效果如下,当计时过程中切换标签页,定时器的时间会放缓,再次切回标签页后&#…

MMDetection研究-1.入门及框架

记录MMDetection研究过程 0.前言 参考: 1.MMDetection框架入门教程(完全版) 2. 1.框架概述 MMDetection是商汤和港中文大学针对目标检测任务推出的一个开源项目,它基于Pytorch实现了大量的目标检测算法,把数据集构建、模型搭建、训练策略等过程都封装成了一个个模块,…

数据排列组合实现

示例 将以下几组数据 (“01”, “02”),(“A1”, “A2”, “A3”),(“B1”, “B2”),(“D1”, “D3”)排列组合成,如:01:…

Isaac Sim软体仿真(以果实采摘场景为例)

如题,在做果蔬采摘的相关项目,背景是通过Isaac Sim做基于强化学习的果蔬采摘,因此简单搭建了一下场景。 效果如下图: 场景 物理环境(重力等):Create --> Physics --> Physics Scene   地面:Create --> Physics --> Ground Plane   灯光:新建文件自带…

基于SpringBoot+Vue的疫情居家办公系统(带1w+文档)

基于SpringBootVue的疫情居家办公系统(带1w文档) 基于SpringBootVue的疫情居家办公系统(带1w文档) 与传统疫情居家办公管理方案对比,应用疫情居家办公管理系统具备很多特点:最先,可以有效地提高疫情居家办公管理信息查找,仅需键入…

NL2SQL之DB-GPT-Hub详解篇:text2sql任务的微调框架和基准对比

NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比 随着生成式人工智能(Artificial Intelligence Generated Content&#xff0c;简写为 AIGC)时代的到来&#xff0c;使用大规模预训练语言模型(LLM)来进行 text2sql 任务的 sql 生成也越来越常见。基于 LLM 的…

小程序智能视频制作SDK解决方案,云端智能视频制作

无论是个人分享生活的点滴&#xff0c;还是企业展示品牌故事&#xff0c;一段精心制作的视频总能迅速抓住观众的眼球&#xff0c;传递无限价值。专业视频制作往往门槛较高&#xff0c;不仅需要专业的技能和设备&#xff0c;还耗费大量时间和精力。面对这一挑战&#xff0c;美摄…