学习日记 | 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 有点类似,当一个函数完全可以放到类外面单独实现,但放到类中能更好组织代码的时候使用。

原文地址:https://www.cnblogs.com/squidGuang/p/9059243.html

时间: 2024-08-30 07:38:17

学习日记 | 5.22 [Python3] Python3基础与面向对象的相关文章

前端学习日记(2) —— HTML5 基础

复习下Web开发学习基础: 前端部分: HTML标签:Web页面的结构,包含了页面的主要内容部分, CSS:页面样式 JS:实现交互行为 后台部分: 前端提交请求到后台通过C#/PHP/JAVA/.net等等处理数据,实现与数据库数据交互 数据库: Sql sever等存放数据表,存放数据信息 HTML工具 关于文本编辑器的工具,不同人有不同见解,(当然应该很少有人用TXT文本文档编辑)主流的编辑器我都用过,Sublime Text.Atom.Eclipse.Notepad++.Dreamwar

学习日记之备忘录模式和继承、面向对象设计

备忘录模式(Memento):在不破坏封装性的前提下.捕获一个对象的内部状态,并在该对象之外保存这个状态. 这样以后就可将该对象恢复到原先保存的状态. (1),把要保存的细节给封装在 Memento 中,那一天要更改保存的细节也不用影响client了. (2),Memento 模式比較适用于功能比較复杂的,但须要维护或记录属性历史的类,须要保存的属性仅仅是众多属性中的一小部分时,Originator 能够依据保存的 Memento 信息还原到前一状态. (3),假设在某个系统中使用命令模式时.须

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

注:这是一系列基于实验楼网络培训的python学习日记,内容零散,只是便于我自己回顾,有需要请了解www.shiyanlou.com. 1. Github相关 首先是复习github相关操作: 1.1 完成创建账号和仓库 登陆github.com,创建new repository,自动初始化README.md. 1.2 使用ssh-keygen生成公私钥 建议密钥保存在默认位置中:终端输入ssh-keygen,默认保存密钥位置为/home/shiyanlou/.ssh/id_rsa,一路回车.然

Python3 Tkinter基础 Entry state=&#39;readonly&#39; 不可写入的输入框,但是可以选中与拷贝

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: from tkinter import * root = Tk() content=StringVar() content.set('可以选中') e1=Entry(root, textvariable=content, state='readonly', )

Java学习日记(一)基础

标识符: 由26个英文字母大小写,数字:0-9 符号:_ $ 组成 定义合法标识符规则: 1.数字不可以开头. 2.不可以使用关键字. 3.Java中严格区分大小写. Java中的注释格式: 单行注释: 格式: //注释文字 多行注释: 格式: /* 注释文字*/ 文档注释: 格式:/** 注释文字 */ 常量: 常量表示不能改变的数值. java中常量的分类: 1.整数常量.所有整数 2.小数常量.所有小数 3.布尔型常量.较为特有,只有两个数值.true 和false. 4.字符常量.将一个

学习日记之大话设计模式和Effective C++大结局

第一次潜心学习一个月时间,看完了<大话设计模式>和<Effective C++>两本书,两本书的前半部分都比较容易,但是后期的部分,比如:C++的内存,异常和模板的知识就很难理解了.也许和自己很少用异常处理和模板的关系吧.自己坚持了一个月,无论如何,这两本书给我带来了很多新的知识,发现了自己的不足.接下来打算继续看<C++ Templates>这本书,希望能弥补自己在模板编程方便的不足和为以后研究STL和Boost打下坚实的基础.废话少说,言归正传.下面说一下两本书的最

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

JAVA之GUI编程概述学习笔记(22)

      下列内容为本人看毕向东老师java视频教程学习笔记! JAVA GUI图形用户界面编程: Windows 操作系统提供两种操作方式:                                 1.GUI                2.CLI; GUI:Grahi User Interface ,图形用户界面.                       特点:用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI: Command line User Interf

Thinkphp学习日记:jQuery_ajax数据提交

最近在玩Thinkphp,废话不多说,说正事. 客户端js提交代码 1 $.post('http://localhost/app/index.php/Index/Index/handle',{username : document.getElementById('username').value,content : document.getElementById('content').value,},function (data){console.log(data);alert('ok');})