《python语言程序设计》2018版第8章19题几何Rectangle2D类(上)--原来我可以直接调用

news/2024/12/22 0:45:58/

在这里插入图片描述
2024.9.29
玩了好几天游戏。
感觉有点灵感了。还想继续玩游戏。
2024.10.4
今天练习阿斯汤加练完从早上10点睡到下午2点.跑到单位玩游戏玩到晚上10点多.
现在回家突然有了灵感
顺便说一句,因为后弯不好,明天加练一次.
然后去丈母娘家.
加油吧

第一章、追求可以外调的函数draw_rec2

  • 我在self的基础上如何让它的变量能够被外部调用.
  • 在这个代码前self 后面加了一个other_rec利用他来作为输入的入口.也是为了扣题上所说的.
    • 但实际的问题却很头疼.
      • 1 statement expected,found py:dedemt
      • 2 Method 'draw_rec2' may be 'static'
      • 不管了实际试一下看看如何
        • 只绘制rec1成功
  • 奇怪的计算
    • 出错的提示![请添加图片描述](https://i-blog.csdnimg.cn/direct/1015ea02ea2840298b124b0d4ff356c1.png)
    • 似乎发现点什么??
      • TypeError: unsupported operand type(s) for -: 'method' and 'float'
    • 成功了原来直接调用可以不用out
      • 原来直接调用就可以不用额外做一个,来玩改一下之前Rectangle2D的类
        • 可能有些啰嗦,但是大家看到了.对比第一章我是不是去掉了out_x之类的.原来我是可以直接通过私有函数将x,y,widht,height.调用的呀.
      • 结果
  • 水平问题rec2的位置没有设计好.下集再弄,明早上7点30瑜伽后弯,天呐.

我在self的基础上如何让它的变量能够被外部调用.

python"> def draw_rec2(self, other_rec):x = other_rec.out_xy = other_rec.out_ywidth_r = other_rec.out_widthheight_r = other_rec.out_heightturtle.penup()turtle.goto(x, y)turtle.dot(6, "yellow")turtle.goto(width_r/ 2 + x, height_r/2 + y)turtle.pendown()turtle.forward(width_r)turtle.right(90)turtle.forward(height_r)turtle.right(90)turtle.forward(width_r)turtle.right(90)turtle.forward(height_r)turtle.hideturtle()turtle.done()

在这个代码前self 后面加了一个other_rec利用他来作为输入的入口.也是为了扣题上所说的.

但实际的问题却很头疼.

1 statement expected,found py:dedemt

请添加图片描述
请添加图片描述

2 Method ‘draw_rec2’ may be ‘static’

请添加图片描述

不管了实际试一下看看如何

python">
class Rectangle2D:def __init__(self, x, y, width, height):self.__x = xself.__y = yself.__width = widthself.__height = heightdef get_area(self):return self.__width * self.__heightdef get_perimeter(self):return (self.__width + self.__height) * 2def out_x(self):return self.__xdef out_y(self):return self.__ydef out_width(self):return self.__widthdef out_height(self):return self.__height# 他内带绘画矩形,直接调用的selfdef draw_rec1(self):turtle.penup()turtle.goto(self.__x, self.__y)turtle.dot(6, "blue")turtle.goto(self.__x-self.__width / 2 , self.__height / 2 + self.__y)turtle.pendown()turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.right(90)turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.hideturtle()turtle.done()#此处是调用外部的矩形并且绘画def draw_rec2(self, other_rec):x = other_rec.out_xy = other_rec.out_ywidth_r = other_rec.out_widthheight_r = other_rec.out_heightturtle.penup()turtle.goto(x, y)turtle.dot(6, "yellow")turtle.goto(x - width_r / 2, height_r / 2 + y)turtle.pendown()turtle.forward(width_r)turtle.right(90)turtle.forward(height_r)turtle.right(90)turtle.forward(width_r)turtle.right(90)turtle.forward(height_r)turtle.hideturtle()turtle.done()a = Rectangle2D(100, 0, 50, 60)def main():#调用它成功a.draw_rec1()main()
只绘制rec1成功

请添加图片描述

第二章、各种问题的展示

  • 我在self的基础上如何让它的变量能够被外部调用.
  • 在这个代码前self 后面加了一个other_rec利用他来作为输入的入口.也是为了扣题上所说的.
    • 但实际的问题却很头疼.
      • 1 statement expected,found py:dedemt
      • 2 Method 'draw_rec2' may be 'static'
      • 不管了实际试一下看看如何
        • 只绘制rec1成功
  • 奇怪的计算
    • 出错的提示![请添加图片描述](https://i-blog.csdnimg.cn/direct/1015ea02ea2840298b124b0d4ff356c1.png)
    • 似乎发现点什么??
      • TypeError: unsupported operand type(s) for -: 'method' and 'float'
    • 成功了原来直接调用可以不用out
      • 原来直接调用就可以不用额外做一个,来玩改一下之前Rectangle2D的类
        • 可能有些啰嗦,但是大家看到了.对比第一章我是不是去掉了out_x之类的.原来我是可以直接通过私有函数将x,y,widht,height.调用的呀.
      • 结果
  • 水平问题rec2的位置没有设计好.下集再弄,明早上7点30瑜伽后弯,天呐.

奇怪的计算

篇幅关系仅仅展示增加修改的地方.其他和上面的代码一样.

python">
a = Rectangle2D(100, 0, 50, 60)
b = Rectangle2D(60, 0, 80, 30)def main():a.draw_rec1()a.draw_rec2(b)main()

出错的提示请添加图片描述

请添加图片描述

似乎发现点什么??

我把draw_rec1的属于self的代码加入到了draw_rec2里刚才所谓的static提示消失了.静态变动态了!!

TypeError: unsupported operand type(s) for -: ‘method’ and ‘float’

成功了原来直接调用可以不用out

python">def draw_rec2(self, other_rec):x_1 = other_rec.__xy_1 = other_rec.__ywidth_r = other_rec.__widthheight_r = other_rec.__heightturtle.penup()turtle.goto(self.__x, self.__y)turtle.dot(6, "blue")turtle.goto(self.__x - self.__width / 2, self.__height / 2 + self.__y)turtle.pendown()turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.right(90)turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)

原来直接调用就可以不用额外做一个,来玩改一下之前Rectangle2D的类

python">
class Rectangle2D:def __init__(self, x, y, width, height):self.__x = xself.__y = yself.__width = widthself.__height = heightdef get_area(self):return self.__width * self.__heightdef get_perimeter(self):return (self.__width + self.__height) * 2def draw_rec1(self):turtle.penup()turtle.goto(self.__x, self.__y)turtle.dot(6, "blue")turtle.goto(self.__x-self.__width / 2 , self.__height / 2 + self.__y)turtle.pendown()turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.right(90)turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.hideturtle()turtle.done()def draw_rec2(self, other_rec):x_1 = other_rec.__xy_1 = other_rec.__ywidth_r = other_rec.__widthheight_r = other_rec.__heightturtle.penup()turtle.goto(self.__x, self.__y)turtle.dot(6, "blue")turtle.goto(self.__x - self.__width / 2, self.__height / 2 + self.__y)turtle.pendown()turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.right(90)turtle.forward(self.__width)turtle.right(90)turtle.forward(self.__height)turtle.penup()turtle.goto(x_1, y_1)turtle.dot(6, "yellow")turtle.goto(x_1 - width_r / 2, height_r / 2 + y_1)turtle.pendown()turtle.forward(width_r)turtle.right(90)turtle.forward(height_r)turtle.right(90)turtle.forward(width_r)turtle.right(90)turtle.forward(height_r)turtle.hideturtle()turtle.done()
可能有些啰嗦,但是大家看到了.对比第一章我是不是去掉了out_x之类的.原来我是可以直接通过私有函数将x,y,widht,height.调用的呀.

结果

请添加图片描述

水平问题rec2的位置没有设计好.下集再弄,明早上7点30瑜伽后弯,天呐.


http://www.ppmy.cn/news/1534929.html

相关文章

SPDK从安装到运行hello_world示例程序

SPDK从安装到运行示例程序 #mermaid-svg-dwdwvhrJiTcgTkVf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dwdwvhrJiTcgTkVf .error-icon{fill:#552222;}#mermaid-svg-dwdwvhrJiTcgTkVf .error-text{fill:#552222;s…

SpinalHDL之语义(Semantic)(三)

本文作为SpinalHDL学习笔记第七十一篇,介绍SpinalHDL的规则(Rules)。 目录: 1.简介(Introduction) 2.并⾏性(Concurrency) 3.以最后赋值为准(Last valid assignment wins) 4.Scala下的信号和寄存器的内在联系(Signal and register interactions with Scala)(OOP引⽤+函数…

【杂谈一之概率论】CDF、PDF、PMF和PPF概念解释与分析

一、概念解释 1、CDF:累积分布函数(cumulative distribution function),又叫做分布函数,是概率密度函数的积分,能完整描述一个实随机变量X的概率分布 2、PDF:连续型概率密度函数(p…

零工市场小程序如何提高找兼职的效率?

越来越多的人们会选择成为自由职业者,或者在空暇时兼职来获取酬劳,那么传统的找兼职方式,如:中介公司、招聘广告等。 如今大家的生活都已经进入了“快节奏”,零工市场小程序针对这样的问题而提出了解决方案&#xff0…

第十一章 【前端】Axios

3.4 Axios 官网:https://axios-http.com/zh/docs/intro Axios 是一个基于 promise 网络请求库,作用于 node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和 node.js 中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpR…

华为OD机试 - 最长的密码(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

YOLO11改进|卷积篇|引入全维动态卷积ODConv

目录 一、【ODConv】全维动态卷积1.1【ODConv】卷积介绍1.2【ODConv】核心代码 二、添加【ODConv】卷积2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【ODConv】全维动态卷积 1.1【ODConv】卷积介绍 ODConv利用一种全新的多维注意力机…

CICD Jenkins实现Pipline

一、安装 1、由于 Jenkins 是基于 Java 的,首先需要确保你的系统中安装了 Java。推荐使用 OpenJDK 11。可以通过以下命令安装: apt update apt install openjdk-11-jdk2、在安装 Jenkins 之前,你需要将其仓库添加到你的系统中。首先&#x…