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 这个问题,当初我弄了五天才建立好联 ...
随机推荐
- 错误:java.lang.Exception: No tests found matching Method testPrePage1(egou_manager_web.TestEBrand) from org.junit.internal.requests.ClassRequest@4f3cc73c
今天测试分页时出现以下错误: java.lang.Exception: No tests found matching Method testPrePage1(egou_manager_web.Tes ...
- Python中使用moviepy进行视频分割
场景 moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割.连接.标题插入.视频合成.非线性编辑,视频处理和定制效果的创建 ...
- mysql5.6.27压缩版安装配置指南【个人总结】
1..下载准备压缩包 360云盘下载地址: https://yunpan.cn/cPKyugkUcDEmP 访问密码 375b 2.解压缩,将压缩版解压到D盘 D:\mysql-5.6. ...
- 2018年蓝桥杯java b组第四题
标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机.各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许 ...
- webservice传输文件的三种方式
1, 在接口中不定义,直接以附件形式传输. 2, 在接口参数中定义byte[]类型,文件在xml中以base64编码传输. 3, 在接口参数中定义DataHandler类型,然后使用MTOM形式来进行 ...
- 【IT技术概念】什么是webservice?
WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互. WebServi ...
- phaser学习总结之Text对象详解
前言 在phaser学习总结之phaser入门教程中,我们已经入门了phaser,对phaser也有所了解但是我们并没有对phaser中的每个对象的属性和方法进行详解,本章将对phaser中的Text ...
- 3DEarth PPT :一款专为GIS系统研发的三维汇报演示系统
3DEarth PPT(三维地球汇报演示系统)又称 3DGis PPT,是专为GIS系统研发的三维汇报演示系统.对有3DGis系统的客户它可以作为一个组件(dll)嵌入原系统,对没有3DGis系统的客 ...
- Shell之三剑客
目录 Shell之三剑客 参考 Grep Sed Awk Shell之三剑客
- mkdir,rmdir
mkdir (选项)(参数) 创建文件夹-m:创建文件夹的同时,赋予其权限-p:若创建目录的上层不存在时,一并创建出来-v:显示创建的过程创建多个目录的时候,用空格隔开 rmdir (选项)(参数) ...