Python学习笔记:2.2.3 习题课06
本文是学习齐老师的《python全栈工程师》课程的笔记,欢迎学习交流。同时感谢齐老师的精彩传授!
习题01:
- 创建类SchoolKid,初始化小孩的姓名、年龄,并且有访问和修改属性的方法。然后创建类ExaggeatingKid,继承SchoolKid,子类中覆盖父类中访问年龄的方法,并将实际年龄增加2.
class SchoolKid:def __init__(self, name, age):self.name = nameself.age = agedef change_name(self, new_name):self.name = new_namereturn self.namedef chang_age(self, new_age):self.age = agereturn self.agedef get(self, attr='name')if attr == 'name':return self.nameelif attr == 'age':return self.ageelse:print('There was not ' , attr)return Noneclass ExaggeratingKid(SchoolKid):def get(self, attr='name'):if attr == 'name':return self.nameelif attr == 'age':return self.age + 2else:print('There was not ' , attr)return None
习题2:
- 内置函数range的参数必须是整数。请编写一个生成器函数,以浮点数为参数(开始值,结束值,步长)生成某范围的序列。
import itertools
def frange(start, end=None, step=1.0):if end is None:end = float(start)start = 0.0assert step # 当step不为True时,抛出错误for i in itertools.count():nxt = start + i * stepif (step > 0.0 and nxt >= end) or (step < 0.0 and nxt <= end):breakyield nxt
f = frange(1.2, 9)
print(list(f)) # [1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2]
习题3:
- 编写一个关于矩形的对象类型,能够通过长、宽配置属性值
- 进 一步完善例题3的代码,让其使用起来更稳健。
class Rectangle:def __init__(self):self.width = 0self.length = 0def __getattr__(self, name):if name == 'size':return self.width, self.lengthelse:raise AttributeErrordef __setattr__(self, name, value):# 此处增加了 try/except代码try:if name == 'size': self.width, self.length = value else:self.__dict__[name] = value except TypeError:print('There are two numbers!')rect = Rectangle()
rect.width = 3
rect.length = 4
print(rect.size)
print('---'*15)rect.size = 30
print(rect.width)
print(rect.length)
运行结果:
习题4:
- 分数的表示形式如3/2这样,但是这种形式在python中是按照除法进行处理。Python的内置对象类型中又没有分数类型(不仅Python没有,是相当多高级语言都没有),所以,有必要自定义一个相关的类型。
- 附加题:在上述基础上,实现分数加法运算
class Fraction:def __init__(self, number, denom=1):self.number = numberself.denom = denomdef __str__(self):return str(self.number) + '/' + str(self.denom)__repr__ = __str__
f = Fraction(2, 3)
print(f) # 2/3
分数相加流程:
class Fraction:def __init__(self, number, denom = 1):self.number = numberself.denom = denomdef __str__(self):return str(self.number) + '/' + str(self.denom)__repr__ = __str__@staticmethoddef gcd(a, b): # 最大公约数if not a > b:a, b = b, awhile b != 0:remainder = a % ba, b = b, remainderreturn a@staticmethoddef lcm(a, b): # 最小公倍数return (a * b) / Fraction.gcd(a, b)def __add__(self, other):lcm_num = Fraction.lcm(self.denom, other.denom)number_num = (lcm_num / self.denom * self.number ) + (lcm_num / other.denom * other.number)return Fraction(number_num, lcm_num)m = Fraction(1, 3)
n = Fraction(1, 2)
s = m + n
print(s)
运行结果:
Python学习笔记:2.2.3 习题课06相关推荐
- 笨办法学习python 学习笔记习题26
笨办法学习python 学习笔记习题26 修改后如下: print("你多大了?", end=' ') age = input() print("你多高?", ...
- 案例驱动式Python学习笔记【第一篇】便捷水果店
前言 后续的此系列博文用于记录案例式Python学习笔记记录,供本人和感兴趣的小伙伴一起学习!!人生苦短,我学Python! 驱动案例 便捷水果店:请为水果店开发一个收银的小程序,已知水果单价和购买重 ...
- Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复)
Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=168& ...
- 【Python学习笔记】cs231nPython Numpy教程
[Python学习笔记]cs231nPython Numpy教程 回顾经典教程cs231n,完成assignments觉得很困难,感觉自己python基础语法掌握的不是很熟,就顺藤摸瓜找了cs231n ...
- 蒟蒻的python 学习笔记 ——北京理工大学嵩天mooc(有时间就看就更新,尽量让笔记容易懂,蟹蟹各位大神不吝赐教)
蒟蒻的python 学习笔记 前言 课一:python语言程序设计 第一周:python 基本语法元素 1.1 程序设计基本方法 1.2 python 环境配置 1.3 实例1:温度转换 1.4 py ...
- [python教程入门学习]python学习笔记(CMD执行文件并传入参数)
本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...
- python学习笔记之编写readConfig读写配置文件
python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Python学习笔记一简介及安装配置
Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
最新文章
- 神经网络模型中class的forward函数何时调用_用Keras从零开始6步骤训练神经网络
- java 读utf-8 xml_用Java和UTF-8編碼生成有效的XML。
- 多晶硅价格单猛涨11% 光伏产业有望量价齐升
- 流式计算框架Storm后台启动命令(避免新开窗口)
- 封装(构造方法,构造器)
- 推荐几个Android开发非常有用的工具(for android studio)
- WinSock I/O 模型 -- WSAEventSelect 模型
- data 的数据代理
- 深入沟通的重要性——《大道至简》第四章读后感
- [转载] python 命名空间
- 巧妙利用Mac标记,分类同类文件的技巧
- Linux目录结构示意详解图
- Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
- 盘点2021年10个顶级数据分析软件,及优缺点对比
- 雅思c1语言等级,雅思分数各代表什么水平
- 看图找茬找不同小程序源码
- 基于anbox的云游戏技术简介
- #10098. 「一本通 3.6 例 1」分离的路径
- 密码学原语如何应用?解析单向哈希的妙用|第9论
- 世界杯运营:时隔2年,这个教科书般的Push,看完依然泪奔
热门文章
- 计算机网络——基本认识
- 北理工计算机学院沈建斌,沈建冰_北京理工大学计算机学院
- 【FFH】如何在鸿蒙系统上进行抓包测试
- python爬虫淘宝实例-python 淘宝爬虫示例源码(抓取天猫数据)
- Java-ZZH1-78面试题
- 致大学计算机老师的一封信,优秀书信作文:致大学老师的一封信
- Unity3D手游开发实践
- 关于tomcat点击startup.bat出现闪退,输入http://localhost:8080网页打不开的解决方法
- MySQL架构与业务总结图
- 2-文件+结构体实现实用系统(拓展)