学习日记 | 5.22 [Python3] Python3基础与面向对象
Posted squidguang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习日记 | 5.22 [Python3] Python3基础与面向对象相关的知识,希望对你有一定的参考价值。
注:这是一系列基于实验楼网络培训的python学习日记,内容零散,只是便于我自己回顾,有需要请了解www.shiyanlou.com。
去三亚玩了3天,进度严重滞后,难受。
3. 挑战1 挑战:实现个税计算器
#!/usr/bin/env python3 import sys
# rateAndQD函数,求应纳税所得额对应的税率和速算扣除数 def rateAndQD(taxableIncome): if taxableIncome <= 1500: rate, QD = 0.03, 0 elif taxableIncome > 1500 and taxableIncome <= 4500: rate, QD = 0.1, 105 elif taxableIncome > 4500 and taxableIncome <= 9000: rate, QD = 0.2, 555 elif taxableIncome > 9000 and taxableIncome <= 35000: rate, QD = 0.25, 1005 elif taxableIncome > 35000 and taxableIncome <= 55000: rate, QD = 0.3, 2755 elif taxableIncome > 55000 and taxableIncome <= 80000: rate, QD = 0.35, 5505 else: rate, QD = 0.45, 13505 return rate, QD if __name__ == "__main__": try: income = int(sys.argv[1]) except: print("Parameter Error") taxableIncome = income - 0 - 3500 rate, QD = rateAndQD(taxableIncome) taxPayable = taxableIncome * rate - QD
print(format(taxPayable, ".2f"))
4. 实验4: 列表、元组、集合与字典
元组不可修改,但元组可以包含可变的数据元素,主要用于只读数据。创建一个元素的元组时需要加逗号,例如zoo = ("monkey",)。
集合是一个无序无重复元素的数据集,主要用于数据元素的去重和测试是否存在,并做集合数学运算。使用大括号{}或set()函数创建,但空集合只能用set元素创建。
注意 xxx in xxx 的使用,对集合的运算操作使用这些符号:| & - ^。
dict是无序的键值对组合,key值在字典中必须唯一,并且必须为不可变类型。
5. 实验5: 函数
全局变量在函数内先用关键字global定义然后再使用。
函数参数按顺序定义4种参数:必选(a),默认(a=1),可变(*a),关键字(**kw)。默认参数:预先设定默认值,此默认值须为不可变类型;可变参数可以传入多个参数或者一个元组;对关键字参数传参时可以使用字典。
还有命名关键字参数(*, name,age),传参时必须带参数名(name = “tom”,age = 16)
c和c++中有传值和传引用的概念,对列表,字典等可变对象做出的修改会被保留。
6. 挑战2 挑战:完善工资计算器
#!/usr/bin/env python3 import sys def rateAndQD(taxableIncome): if taxableIncome <= 0: rate, QD = 0, 0 elif taxableIncome > 0 and taxableIncome <= 1500: rate, QD = 0.03, 0 elif taxableIncome > 1500 and taxableIncome <= 4500: rate, QD = 0.1, 105 elif taxableIncome > 4500 and taxableIncome <= 9000: rate, QD = 0.2, 555 elif taxableIncome > 9000 and taxableIncome <= 35000: rate, QD = 0.25, 1005 elif taxableIncome > 35000 and taxableIncome <= 55000: rate, QD = 0.3, 2755 elif taxableIncome > 55000 and taxableIncome <= 80000: rate, QD = 0.35, 5505 else: rate, QD = 0.45, 13505 return rate, QD if __name__ == "__main__": for arg in sys.argv[1:]: try: idNum = int(arg.split(":")[0]) income = int(arg.split(":")[1]) except: print("Parameter Error") taxableIncome = income*0.835 - 3500 rate, QD = rateAndQD(taxableIncome) taxPayable = taxableIncome * rate - QD salaryGet = income*0.835 - taxPayable print("%d:%.2f"%(idNum, salaryGet))
7. 实验6:面向对象编程
面向对象编程:是将对象视为程序的组成单元,程序的执行通过调用对象提供的接口完成。
面向对象的4个核心概念:抽象,封装,继承,多态。
特征和行为在程序语言中通常被称为属性和方法。
用 __repr__ 和最后 return 的结果来格式化实例的打印格式。
封装:用类将数据和基于数据的操作封装在一起,隐藏内部数据,对外提供公共的访问接口。封装,能够隐藏数据访问,最大的好处是提供访问控制。使用pass可以略过函数。
多态:使用同一方法对不同对象可以产生不同结果。
python的私有属性:用一或两个下划线开头表示,一个下划线表示外部调用者不应该直接调用这个属性,但还是可以调用到,两个下划线外部就不能直接调用到了(拒绝外部访问,但不绝对)。
静态变量:可以直接从类访问,不需要实例化对象就能访问,一般在 __init__ 之前声明。
类方法:与静态变量类似,可以通过类名直接访问,用null装饰,声明 @classmethod,第一个参数传入的是类对象cls,而不是self。
property装饰器:添加 @property @.setter 等可以将方法变成一个属性来使用,通过装饰器获得和修改对象的某一个属性。
静态方法:用null装饰 @staticmethod 和 @classmethod 有点类似,当一个函数完全可以放到类外面单独实现,但放到类中能更好组织代码的时候使用。
以上是关于学习日记 | 5.22 [Python3] Python3基础与面向对象的主要内容,如果未能解决你的问题,请参考以下文章