# 四 声明式编程练习题

# 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. poj 3061(二分 or 尺取法)

    传送门:Problem 3061 https://www.cnblogs.com/violet-acmer/p/9793209.html 马上就要去上课了,先献上二分AC代码,其余的有空再补 题意: ...

  2. Meavn项目中log4j的使用

    两个步骤: 1.在pom.xml中添加: <dependency> <groupId>log4j</groupId> <artifactId>log4j ...

  3. es7预览

    哈哈,es6才刚刚掌握,就给大家介绍es7了. es7的草案其实早已经定下来了,而且更加向着java这些高级语言看齐了 chrome的高版本其实也已经对es7的部分功能实现了!! 1.数组 inclu ...

  4. JS基础:求一组数中的最大最小值,以及所在位置

    var arr = [0, 5, -3, 6, 2, -6, 10]; //定义一个最大值和一个最小值,把他们的索引值赋值给固定的两个变量 var maxValue = arr[0]; var min ...

  5. Jupyter 魔术命令(magic commands)

    自动重新加载更改的模块 命令参数如下所示: %autoreload: 自动重载%aimport排除的模块之外的所有模块. %autoreload 0: 禁用自动重载 %autoreload 1: 自动 ...

  6. 【转载】掌握 HTTP 缓存——从请求到响应过程的一切(下)

    作者:Ulrich Kautz 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58bd4dd1204d50674934c3b0 ...

  7. Java添加过期注解

    加上 @Deprecated 后方法名称显示: 中划线(删除线)意为:发生这些变化并不会影响编译,只是提醒一下程序员,这个方法以后是要被删除的,最好别用.就是如果一个类从另外一个类继承,并且overr ...

  8. [HEOI2015]定价 (贪心)

    分类讨论大法好! \(solution:\) 先说一下我对这个题目的态度: 首先这一题是贪心,这个十分明显,看了一眼其他题解都是十分优秀的贪心,可是大家都没有想过吗:你们贪心都是在区间\([l,r]\ ...

  9. js 组件化

    我的github样例:https://github.com/hzijone/javascript_module js 用对象的方式实现组件化. 1.对一个对象里增加方法的方式: 把模块的变量传给函数, ...

  10. B. Light It Up

    题目链接:http://codeforces.com/problemset/problem/1000/B 代码: #include<iostream> #include<cstrin ...