python基础知识大一总结与反思_python犯傻之题目解答思路比较与反思

1.题目:

企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

自己的答案:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 profit = int(input("Your profit:"))2 if profit <= 100000:3 bonus = profit*0.1

4 elif profit <= 200000:5 bonus = 100000*0.1+(profit-100000)*0.075

6 elif profit <= 400000:7 bonus = 100000*0.1+100000*0.075+(profit-200000)*0.05

8 elif profit <= 600000:9 bonus = 100000*0.1+100000*0.075+200000*0.05+(profit-400000)*0.03

10 elif profit <= 1000000:11 bonus = 100000*0.1+100000*0.075+200000*0.05+200000*0.03+(profit-600000)*0.015

12 elif profit >= 1000000:13 bonus = 100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(1000000-profit)*0.01

14 print("Your bonus:",bonus)

48304ba5e6f9fe08f3fa1abda7d326ab.png

优化答案:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 i = int(input('净利润:'))2 arr = [1000000,600000,400000,200000,100000,0]3 rat = [0.01,0.015,0.03,0.05,0.075,0.1]4 r =05 for idx in range(0,6):6 if i>arr[idx]:7 r+=(i-arr[idx])*rat[idx]8 print (i-arr[idx])*rat[idx]9 i=arr[idx]10 print r

48304ba5e6f9fe08f3fa1abda7d326ab.png

反思:在遇到元素计算多次出现时,不要多用if else,可以用列表和for循环遍历的方式来解决。

2.题目:

输入三个整数x,y,z,请把这三个数由小到大输出。

自己的答案:

1 count1 = int(input("输入第一个数:"))2 count2 = int(input("输入第二个数:"))3 count3 = int(input("输入第三个数:"))4 list =[count1,count2,count3]5 list.sort()6 print(list)

优化答案:

1 l =[]2 for i in range(3):3 x = int(input('integer:\n'))4 l.append(x)5 l.sort()6 print l

反思:遇到让用户输入多个项目的时候可以用列表和for循环遍历。

3.题目:

写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

自己的答案:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 defmy_indexes(content):2 '''输出参数奇数位索引的值'''

3 new_list =[]4 for i inrange(0,len(content)):5 if i%2 == 1:6 new_list.append(content[i])7 returnnew_list8 val = my_indexes([0,1,2,3,4,5,6,7])9 print(val)

48304ba5e6f9fe08f3fa1abda7d326ab.png

优化答案:

1 defmy_indexes(content):2 content = content[1::2]3 returncontent4 val = my_indexes([0,1,2,3,4])5 print(val)

反思:切片切片切片,灵活运用!

4.题目:

写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将修改后的字典返回

自己的答案:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 defcase_dict(dict):2 new_dict ={}3 for k,v indict.items():4 if len(v) > 2:5 v = v[:2]6 new_dict[k] =v7 else:8 new_dict[k] =v9 returnnew_dict10 print(case_dict({'a':'123456','b':'456','c':'78'}))

48304ba5e6f9fe08f3fa1abda7d326ab.png

优化答案:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 defcase_dict(dict):2 for key indict:3 value =dict[key]4 if len(value) > 2:5 dict[key] = value[:2]6 returndict7 print(case_dict({'a':'123456','b':'456789','c':'12'}))

48304ba5e6f9fe08f3fa1abda7d326ab.png

反思:尽量不要创建新字典(当字典特别大的时候,内存负荷过高),for循环不要用 k v 去接收 键 和 值,可以便历 键 ,然后通过键去取值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值