本文是学习齐老师的《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相关推荐

  1. 笨办法学习python 学习笔记习题26

    笨办法学习python 学习笔记习题26 修改后如下: print("你多大了?", end=' ') age = input() print("你多高?", ...

  2. 案例驱动式Python学习笔记【第一篇】便捷水果店

    前言 后续的此系列博文用于记录案例式Python学习笔记记录,供本人和感兴趣的小伙伴一起学习!!人生苦短,我学Python! 驱动案例 便捷水果店:请为水果店开发一个收银的小程序,已知水果单价和购买重 ...

  3. Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复)

    Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=168& ...

  4. 【Python学习笔记】cs231nPython Numpy教程

    [Python学习笔记]cs231nPython Numpy教程 回顾经典教程cs231n,完成assignments觉得很困难,感觉自己python基础语法掌握的不是很熟,就顺藤摸瓜找了cs231n ...

  5. 蒟蒻的python 学习笔记 ——北京理工大学嵩天mooc(有时间就看就更新,尽量让笔记容易懂,蟹蟹各位大神不吝赐教)

    蒟蒻的python 学习笔记 前言 课一:python语言程序设计 第一周:python 基本语法元素 1.1 程序设计基本方法 1.2 python 环境配置 1.3 实例1:温度转换 1.4 py ...

  6. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  7. python学习笔记之编写readConfig读写配置文件

    python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客

  8. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  9. Python学习笔记一简介及安装配置

    Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...

  10. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

最新文章

  1. 神经网络模型中class的forward函数何时调用_用Keras从零开始6步骤训练神经网络
  2. java 读utf-8 xml_用Java和UTF-8編碼生成有效的XML。
  3. 多晶硅价格单猛涨11% 光伏产业有望量价齐升
  4. 流式计算框架Storm后台启动命令(避免新开窗口)
  5. 封装(构造方法,构造器)
  6. 推荐几个Android开发非常有用的工具(for android studio)
  7. WinSock I/O 模型 -- WSAEventSelect 模型
  8. data 的数据代理
  9. 深入沟通的重要性——《大道至简》第四章读后感
  10. [转载] python 命名空间
  11. 巧妙利用Mac标记,分类同类文件的技巧
  12. Linux目录结构示意详解图
  13. Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
  14. 盘点2021年10个顶级数据分析软件,及优缺点对比
  15. 雅思c1语言等级,雅思分数各代表什么水平
  16. 看图找茬找不同小程序源码
  17. 基于anbox的云游戏技术简介
  18. #10098. 「一本通 3.6 例 1」分离的路径
  19. 密码学原语如何应用?解析单向哈希的妙用|第9论
  20. 世界杯运营:时隔2年,这个教科书般的Push,看完依然泪奔

热门文章

  1. 计算机网络——基本认识
  2. 北理工计算机学院沈建斌,沈建冰_北京理工大学计算机学院
  3. 【FFH】如何在鸿蒙系统上进行抓包测试
  4. python爬虫淘宝实例-python 淘宝爬虫示例源码(抓取天猫数据)
  5. Java-ZZH1-78面试题
  6. 致大学计算机老师的一封信,优秀书信作文:致大学老师的一封信
  7. Unity3D手游开发实践
  8. 关于tomcat点击startup.bat出现闪退,输入http://localhost:8080网页打不开的解决方法
  9. MySQL架构与业务总结图
  10. 2-文件+结构体实现实用系统(拓展)