练习题
1,利润和提成的关系如图所示,从键盘输入当月利润I,求应发放奖金总数
# coding:utf-8 x = int(input('请输入净利润:')) arr = [1000000, 600000, 400000, 200000, 100000, 0] rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] r = 0 for i in range(0, 6): if x > arr[i]: r += (x-arr[i])*rat[i] print((x-arr[i])*rat[i]) x = arr[i] print(r)
执行结果:
请输入净利润:180000 6000.0 10000.0 16000.0
2,回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数
def is_palindrome(n): s = str(n) for i in range(len(s)): if s[i] != s[-(i+1)]: return False return True output = filter(is_palindrome, range(1, 1000)) print('1~1000:', list(output))
执行结果:
1~1000: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161。。。999
3,假设我们用一组tuple表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按名字排序
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] def by_name(t): return t[0].lower() L2 = sorted(L, key=by_name) print(L2) # [('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)] def by_score(t): return t[1] L2 = sorted(L, key=by_score) print(L2) # [('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]
4,