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 这个问题,当初我弄了五天才建立好联 ...
随机推荐
- centos7安装mongodb以及使用
https://blog.csdn.net/sun007700/article/details/100671570
- android 定时提醒 - Notification
定时弹出 demo ,代码如下: 1.MainActivity.java public class MainActivity extends Activity implements OnClickLi ...
- java 简单框架的运用
Struts Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的. Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关: 1.模 ...
- Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置
博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...
- Elastic Stack 笔记(四)Elasticsearch5.6 索引及文档管理
博客地址:http://www.moonxy.com 一.前言 在 Elasticsearch 中,对文档进行索引等操作时,既可以通过 RESTful 接口进行操作,也可以通过 Java 也可以通过 ...
- 连环清洁工之特殊任务--java资源如何关闭?
小C是一名特殊的黑客,他专门为黑客提供服务,扫除黑客攻击的痕迹,避免被查到为何人攻击. 今天他正兴致勃勃的玩游戏<连环清洁工>,连环清洁工是由iFun4all S.A.制作发行的一款犯罪题 ...
- 如何使用WordPress搭建个人博客
目录 如何使用WordPress搭建个人博客 一.在安装Linux服务器管理工具WDCP面板 二.在WDCP面板创建一个站点 二.上传博客程序到服务器 @(如何使用WordPress搭建个人博客) 如 ...
- centos 搭建SVN服务器简单流程
yum -y install subversion mkdir -p /work/svn && cd /work/svn //创建版本库 svnadmin create test -- ...
- Spark学习之RDDs介绍
什么是RDDS? RDDS即Resilient distributed datasets(弹性分布式数据集). Spark中,所有计算都是通过RDDs的创建,转换,操作完成的. 一个RDD是一个不可改 ...
- android实现emoji输入
学android也有一段时间, 一直都是自己摸索, 各种上网查资料, 也明白了不能一味去索取有时间也要分享一些自己的心得 . 最近几天都在写关于android emoji输入的小例子,网上有不少源码还 ...