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,求应发放奖金总数?
自己的答案:
profit = int(input("Your profit:"))
if profit <= 100000:
bonus = profit*0.1
elif profit <= 200000:
bonus = 100000*0.1+(profit-100000)*0.075
elif profit <= 400000:
bonus = 100000*0.1+100000*0.075+(profit-200000)*0.05
elif profit <= 600000:
bonus = 100000*0.1+100000*0.075+200000*0.05+(profit-400000)*0.03
elif profit <= 1000000:
bonus = 100000*0.1+100000*0.075+200000*0.05+200000*0.03+(profit-600000)*0.015
elif profit >= 1000000:
bonus = 100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(1000000-profit)*0.01
print("Your bonus:",bonus)
优化答案:
i = 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 idx in range(0,6):
if i>arr[idx]:
r+=(i-arr[idx])*rat[idx]
print (i-arr[idx])*rat[idx]
i=arr[idx]
print r
反思:在遇到元素计算多次出现时,不要多用if else,可以用列表和for循环遍历的方式来解决。
2.题目:
输入三个整数x,y,z,请把这三个数由小到大输出。
自己的答案:
count1 = int(input("输入第一个数:"))
count2 = int(input("输入第二个数:"))
count3 = int(input("输入第三个数:"))
list = [count1,count2,count3]
list.sort()
print(list)
优化答案:
l = []
for i in range(3):
x = int(input('integer:\n'))
l.append(x)
l.sort()
print l
反思:遇到让用户输入多个项目的时候可以用列表和for循环遍历。
3.题目:
写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
自己的答案:
def my_indexes(content):
'''输出参数奇数位索引的值'''
new_list = []
for i in range(0,len(content)):
if i%2 == 1:
new_list.append(content[i])
return new_list
val = my_indexes([0,1,2,3,4,5,6,7])
print(val)
优化答案:
def my_indexes(content):
content = content[1::2]
return content
val = my_indexes([0,1,2,3,4])
print(val)
反思:切片切片切片,灵活运用!
4.题目:
写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将修改后的字典返回
自己的答案:
def case_dict(dict):
new_dict = {}
for k,v in dict.items():
if len(v) > 2:
v = v[:2]
new_dict[k] = v
else:
new_dict[k] = v
return new_dict
print(case_dict({'a':'','b':'','c':''}))
优化答案:
def case_dict(dict):
for key in dict:
value = dict[key]
if len(value) > 2:
dict[key] = value[:2]
return dict
print(case_dict({'a':'','b':'','c':''}))
反思:尽量不要创建新字典(当字典特别大的时候,内存负荷过高),for循环不要用 k v 去接收 键 和 值,可以便历 键 ,然后通过键去取值
python犯傻之题目解答思路比较与反思的更多相关文章
- LeetCode题目解答
LeetCode题目解答——Easy部分 Posted on 2014 年 11 月 3 日 by 四火 [Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复 ...
- LeetCode算法题目解答汇总(转自四火的唠叨)
LeetCode算法题目解答汇总 本文转自<四火的唠叨> 只要不是特别忙或者特别不方便,最近一直保持着每天做几道算法题的规律,到后来随着难度的增加,每天做的题目越来越少.我的初衷就是练习, ...
- 走进异步世界-犯傻也值得分享:ConfigureAwait(false)使用经验分享
在上周解决“博客程序异步化改造之后遭遇的性能问题”的过程中,我们干了一件自以为很有成就感的事——在表现层(MVC与WebForms)将所有使用await的地方都加上了ConfigureAwait(fa ...
- Python简单的CTF题目hash碰撞小脚本
Python简单的CTF题目hash碰撞小脚本 import hashlib for num in range(10000,9999999999): res = hashlib.sha1(str(nu ...
- Python—经典练手题目汇总
Python-经典练手题目汇总 # 1.有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两# 个,问几天以后能卖完? day=0 xg=1020 for i in rang ...
- (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)
--------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...
- 全部leetcode题目解答(不含带锁)
(记忆线:当时一刷完是1-205. 二刷88道.下次更新记得标记不能bug-free的原因.) 88-------------Perfect Squares(完美平方数.给一个整数,求出用平方数来 ...
- 剑指offer题目解答合集(C++版)
数组中重复的数字 二维数组中查找 字符串 替换空格 二叉树的编码和解码 从尾到头打印链表 重建二叉树 二叉树的下一个节点 2个栈实现队列 斐波那契数列 旋转数字 矩阵中的路径 机器人的运动范围 剪绳子 ...
- 1001.A+B Format (20)题目解答
前言 最开始看到这个题目,我的第一个想法是有没有那种输出格式可以直接拿来用的,然后我百度了一下,想偷懒,然而并没有这种东西.只好动动自己的脑子了. 关于GitHub 这个问题,当初我弄了五天才建立好联 ...
随机推荐
- Apache RocketMQ 消息队列部署与可视化界面安装
一.介绍 Apache RocketMQ是一个分布式.队列模型的消息中间件,具有低延迟.高性能和高可靠.万亿级容量和灵活的可扩展性.核心组件由四部分组成:Name Servers,Brokers,Pr ...
- Android Q 正式命名为 Android 10
根据官方博文,谷歌已经公布了 Android Q 的名称,它并不是想以前一样,以甜食命名,也不是以任何以字母 Q 开头来命名,而是简单称它为 Android 10. 该公司表示,它正在改变其发布版本的 ...
- 彻底解决android拍照后无法显示的问题
这是对上篇"android 图片拍照,相册选图,剪切并显示"的文章之后的 改进 上一篇文章虽然能解决图片的拍照剪切以及显示,但是发现他有一个缺点, 如果该程序单独运行,貌似没有任何 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试
最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...
- EasyJson 发布
JSON库很常用了,现在开源的JSON库也有很多.但是我们仍然面临下列问题 1)时不时的爆出这个Json库出现漏洞,那个json库出现漏洞.一旦出现漏洞只能升级,想切换JSON都不成. 2)一个项目中 ...
- [Scikit-learn] 4.3 Preprocessing data
数据分析的重难点,就这么来了,欢迎欢迎,热烈欢迎. 4. Dataset transformations 4.3. Preprocessing data 4.3.1. Standardization, ...
- ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)---python中文编码问题
解决方案一:将如下部分加在报错的py文件里 import sys reload(sys) sys.setdefaultencoding('utf-8')
- 部份css样式详解(附实际应用)
本文的所有实例均基于博客园的页面定制. 所有表格内容来自W3CSchool. 页面背景(background) 博客开通之后,很多人最先做的事情一定是改页面的背景,换成一张图片或者换上一个自己喜欢的颜 ...
- Android之各个版本之间的变化
(1)android5.0 Android5.0之后隐式打开服务需要指明包名 (2)android6.0 Android6.0之后涉及隐私的权限必须动态申请 (3)android8.0 android ...
- 品Spring:对@Autowired和@Value注解的处理方法
在Spring中能够完成依赖注入的注解有JavaSE提供的@Resource注解,就是上一篇文章介绍的. 还有JavaEE提供的@javax.inject.Inject注解,这个用的很少,因为一般都不 ...