# 四 声明式编程练习题

# 1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写
names = ['egon', 'alex_sb', 'wupeiqi', 'yuanhao']
# # 方式一:手动实现
# new_names=[]
# for line in names:
# new_names.append(line.swapcase())
# print(new_names)
#
# # 方式二:列表生成式
# new_names=[line.swapcase() for line in names]
# print(new_names)
#
# # 方式三:map+匿名函数
# res=map(lambda line :line.swapcase() ,names)
# print(list(res)) # names=[name.upper() for name in names]
# print(names) # 2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度
names = ['egon', 'alex_sb', 'wupeiqi', 'yuanhao'] # new_names=[]
# for line in names:
# if not line.endswith('sb'):
# new_names.append(line)
# print(new_names) # new_names=[len(line) for line in names if not line.endswith('sb') ]
# print(new_names) # res=filter(lambda line:not line.endswith('sb'),names)
# print(list(res)) # 3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)
# file=[]
# with open('a.txt','rt',encoding='utf-8')as f:
# for line in f:
# res=f.read()
# # print(res)
# res=res.split('\n')
# file.append(res)
# print(file)
# def funcs(x):
# return len(x)
# res=max(file,key=funcs)
# print(res)
# res2=max(res,key=funcs)
# print(len(res2)) # print(max(len(line) for line in f)) # 4、求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)
# with open('a.txt','rt',encoding='utf-8')as f:
# print(sum(len(line) for line in f))
# print(sum(len(line) for line in f)) # 求包换换行符在内的文件所有的字符数,为何得到的值为0? # 5、思考题
# with open('a.txt') as f:
# g=(len(line) for line in f)
# print(sum(g)) #为何报错? # with open('a.txt') as f:
# print(sum(len(line) for line in f))
# print(sum(g)) #为何报错?(len(line) for line in f)时循环多个值
#
# 6、文件shopping.txt内容如下
# mac,20000,3
# lenovo,3000,10
# tesla,1000000,10
# chicken,200,1
# 求总共花了多少钱?
# 打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]
# 求单价大于10000的商品信息,格式同上 # with open('shopping.txt','rt',encoding='utf-8') as f:
# info=[line.strip('\n').split(',') for line in f]
# print(info)
# cost=sum(float(unit_price) *int(count) for _,unit_price,count in info)
# print(cost) # with open('shopping.txt', 'rt', encoding='utf-8') as f:
# # for line in f:
# # print(line)
# info=[{'name':line.strip('\n').split(',')[0],
# 'price':int(line.strip('\n').split(',')[1]),
# 'count':int(line.strip('\n').split(',')[2])} for line in f]
# print(info) # with open('shopping.txt',encoding='utf-8') as f:
# info = [{'name': line.strip('\n').split(',')[0],
# 'price': int(line.strip('\n').split(',')[1]),
# 'count': int(line.strip('\n').split(',')[2])} for line in f if int(line.strip('\n').split(',')[1]) > 10000]
# print(info) # ====================
# 函数递归
# 四 二分法
#
# 想从一个按照从小到大排列的数字列表中找到指定的数字,
# 遍历的效率太低,用二分法(算法的一种,算法是解决问题的方法)可以极大低缩小问题规模
# 实现类似于in的效果
# l = [1, 2, 10, 30, 33, 99, 101, 200, 301, 311, 402, 403, 500, 900, 1000] # 从小到大排列的数字列表
# # find_index = 900
# def search(find_index, l):
# print(l)
# if len(l)==0:
# print('not find!')
# return
# mid_num = len(l) // 2
# mid_index = l[mid_num]
# # print(mid_index)
# if find_index > mid_index:
# print('right')
# l = l[mid_num + 1:]
# search(find_index, l)
# elif find_index < mid_index:
# print('left')
# l = l[0:mid_num]
# search(find_index, l)
# else:
# print('find it!')
#
# search(901, l) # 实现类似于l.index(30)的效果
# 查找一个值是否存在于列表中并返回索引
# l = [1, 2, 10, 30, 33, 99, 101, 200, 301, 311, 402, 403, 500, 900, 1000] # 从小到大排列的数字列表
# def search(num,l,start=0,stop=len(l)-1):
# if start <= stop:
# mid=start+(stop-start)//2
# print('start:[%s] stop:[%s] mid:[%s] mid_val:[%s]' %(start,stop,mid,l[mid]))
# if num > l[mid]:
# start=mid+1
# elif num < l[mid]:
# stop=mid-1
# else:
# print('find it',mid)
# return
# search(num,l,start,stop)
# else: #如果stop > start则意味着列表实际上已经全部切完,即切为空
# print('not exists')
# return
#
# search(301,l)

PYTHON-匿名函数,递归与二分法,面向过程编程-练习的更多相关文章

  1. python函数:匿名函数、函数递归与二分法、面向过程编程

    今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...

  2. JS匿名函数递归实现阶乘

    var rs = (function (value) { if (value > 1) return value * arguments.callee(value - 1); return va ...

  3. python 匿名函数的使用(并没有那么简单)

    以下为几种匿名函数的使用方式:x=[(lambda x:x**2)(x) for x in range(10)]print(x)y=[x**2 for x in range(10)]print(y)i ...

  4. Python匿名函数_return语句

    Python匿名函数: 使用 lambda 关键字创建匿名函数: lambda 定义的函数只是一个表达式,而不是代码块 lambda 函数拥有自己的命名空间,不能够访问参数列表之外的 或 全局命名空间 ...

  5. Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n ...

  6. python匿名函数(lambda)

    简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方 ...

  7. python匿名函数

    文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...

  8. python 匿名函数与三元运算

    匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda x ...

  9. python 匿名函数&内置函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...

  10. python匿名函数 高阶函数 内置函数 文件操作

    1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...

随机推荐

  1. 内置窗口 pyqt5

    1.使用Qt Designer设计三个窗口 注意:在主窗口中需要添加一个girdLayout 2.创建**.py from PyQt5.QtWidgets import QMainWindow, QA ...

  2. Spark记录-Spark性能优化解决方案

    Spark性能优化的10大问题及其解决方案 问题1:reduce task数目不合适解决方式:需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism.通常,r ...

  3. JAVA记录-@Controller和RequestMapping注解代码介绍

    1.spring-mvc.xml加入配置 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component ...

  4. python 小程序,替换文件中的字符串

    [root@PythonPC ~]# cat passwd root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x: ...

  5. bean之间的继承和依赖关系

    继承Bean配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父Bean的Bean称为子Bean 子Bean从父Bean中继承配置,包括Bean的属性配置 子Bean可 ...

  6. sql server存储过程简单的使用

    --创建存储过程 create proc test_proc @date datetime as select * from t_user where times between ),),),),' ...

  7. JavaScript之子类构建工具

    (function(){ var initializing = false; var superPattern = /xyz/.test(function(){ xyz; }) ? /\b_super ...

  8. [C++]栈区(栈)与堆区(类链表)[转/摘]

     一.预备知识—程序的内存分配   一个由C/C++编译的程序占用的内存分为以下几个部分    1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    操 ...

  9. luogu P3193 [HNOI2008]GT考试

    传送门 单串匹配显然用\(kmp\) 一个暴力的dp是设\(f_{i,j}\),表示前\(i\)位,正在匹配给定串第\(j\)位的方案,转移就枚举下一位放什么,然后使用\(kmp\)看会匹配到给定串的 ...

  10. k8s系列~docker mysql

    docker封装mysql的一些心得 简介:今天咱们来聊聊容器化mysql的一些心得 版本:Docker version 18.03 mysql 5.7.21考虑条件:  1 选好合适的docker镜 ...