学习日记 | 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基础与面向对象的主要内容,如果未能解决你的问题,请参考以下文章

python3学习日记 文档测试

学习日记 | 5.18 [Python3] Python3基础与面向对象

python学习日记——常见环境问题及处理

python3网络爬虫学习——基本库的使用

二分法学习总结(5.22)

Python爬虫日记02-数据可视化