代码练习记录

来源:互联网 发布:linux 自启动 编辑:程序博客网 时间:2024/06/05 20:29

高阶函数 map/reduce

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]:

def normalize(name):    return name.capitalize()L1 = ['adam', 'LISA', 'barT']L2 = list(map(normalize, L1))print(L2)

Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:

平常的写法如下:

def prod(L):    for i in range(1,len(L)):        L[i]=L[i-1]*L[i]    return L[i]print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))

使用reduce()

from functools import reducedef prod(L):    def f(x,y):        return x*y      return reduce(f,L)print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))

注:关于reduce和map函数

reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

例如,编写一个f函数,接收x和y,返回x和y的和:

def f(x, y):    return x + y

调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:
先计算头两个元素:f(1, 3),结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;
由于没有更多的元素了,计算结束,返回结果25。

利用map和reduce编写一个str2float函数,把字符串’123.456’转换成浮点数123.456:

不知道怎么用map和reduce啊???哪个大佬知道

def str2float(s):    return (float(s))print('str2float(\'123.456\') =', str2float('123.456'))

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

方法一:利用python自带的函数

from itertools import permutationsa=[]for i in permutations ([1,2,3,4],3):    a.append(i)print len(a)print a

方法二

for i in range (1,5):    for j in range (1,5):        for k in range (1,5):            if (i != j != k):                print i,j,k

比较:因为数据太少可能没什么区别,但是数据增加到1~9中的三个数字的时候前一个会比后一个快7倍多

计算利润

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

一个小的问题是python 3x没有了raw_input

第一种方法是直接的if else进行判断

def profit(num):    profit1 =0(没有这句话,报错UnboundLocalError: local variable 'profit1' referenced before assignment)    if num <20000:        profit1 = num *0.2    elif 20000 < num < 40000:        profit1 = num *0.1    else:        print 787887878    return profit1x = input()print profit(x)

第二种方法

原创粉丝点击