《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学

希望这个下集里能有完整的代码
一、containsPoint实现
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
mac系统里似乎不接受我们的驼峰命名,所以这个函数应该是contains_point

代码段如下,出现的问题0.05后Statement expected, found Py:DEDENT,完又遇到这个哥们了
def get_x(self):return self.__xdef get_y(self):return self.__y# 实现另一个矩形的x,y坐标与当前矩形x,y对比def contains_points(self, other_x, other_y):a_t_valid = other_x - self.__xb_t_valid = other_y - self.__ya = (pow(a_t_valid, 2) + pow(b_t_valid, 2)) * 0.05

二、我要解决这个哥哥
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
先从网上找一下Statement expected, found Py:DEDENT
语句预期,发现Py:DEDEN Statement expected, found Py:DEDENT

AI解释的.我看不懂.估计是阅读恐惧问题.
我想想从里面找找我能看到的地方吧
TAB还是空格呢??
记得有人说.用空格的程序员很宝贵,要比用TAB的宝贵.看来这句话今天可以试试了

画圈的地方是我用空格键一个个按出来的.而不是用TAB按出来的.
小小总结
看来多用空格按钮
三、如何在矩形中对比
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
圆形我们以半径的长度为x,y的对比.矩形怎么办呢??
我之前已经有个办法了.那么我要去找一下第4章的兄弟帮忙
我调用了24.2第11次做的4.31题的代码
def count_point_judge(r1x, r1y, r2x, r2y, r3x, r3y):judgeLine1 = ((r1x - r2x) * (r3y - r2y)) - ((r3x - r2x) * (r1y - r2y))if judgeLine1 < 0:print("P2 x{} y{} is on the left side of the line from P0 to P1)".format(r3x, r3y))elif judgeLine1 > 0:print("P2 x{} y{} is on the right side of the line from P0 to P1)".format(r3x, r3y))elif judgeLine1 == 0:print("P2 x{} y{} is on the same line from P0 to P1)".format(r3x, r3y))
我似乎看到了希望.但是我发现它是用已知的2个点组成的线段对比另一个已知的点.
四、兜兜转转的我要拆分矩形的四个点
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
本来就是一个偷懒的完成矩形就可以了.但是.但是看来玩要好好的拆分了.
如何拆分矩形的四个点呢.
我们应该利用当前的x,y坐标和长宽来计算四个点的坐标.
# 求得最右边的代码
(x_1 - width_r / 2, height_r / 2 + y_1)
好我们建立一个计算的函数吧
五、计算矩形四个x,y点的con_po登场
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
def con_po(self):rx1, ry1 = self.__x - self.__width / 2, self.__height / 2 + self.__yrx2, ry2 = abs(rx1) + self.__width, ry1rx3, ry3 = rx2, ry2 - self.__heightrx4, ry4 =abs(rx1)-self.__height, ry3turtle.penup()turtle.goto(rx1,ry1)turtle.pendown()turtle.goto(rx2,ry2)turtle.goto(rx3,ry3)turtle.goto(rx4,ry4)turtle.hideturtle()turtle.done()
我们来小小的测试一下这个函数
def main():x1, y1, width1, height1 = eval(input("Enter x1,y1,width1,height1: "))r1 = Rectangle2D(x1, y1, width1, height1)r1.con_po()main()
结果

别慌,我们把点标出来.
# 增加一段打印代码来看看这4对坐标的数值
print(f"x1: {rx1}, y1: {ry1}")
print(f"x2: {rx2}, y2: {ry2}")
print(f"x3: {rx3}, y3: {ry3}")
print(f"x4: {rx4}, y4: {ry4}")
以下数据为例.按我的代码计算结果截图
x1, y1, width1, height1 = 9,1.3,10,35.3

出在哪里呢???
我怀疑是x4的计算上.我们合计一下.
# 我是不是不应该进行这样的减法rx4, ry4 =abs(rx1)-self.__height, ry3
修改完成
def con_po(self):rx1, ry1 = self.__x - self.__width / 2, self.__height / 2 + self.__yrx2, ry2 = abs(rx1) + self.__width, ry1rx3, ry3 = rx2, ry2 - self.__heightrx4, ry4 = rx1, ry3print(f"x1: {rx1}, y1: {ry1}")print(f"x2: {rx2}, y2: {ry2}")print(f"x3: {rx3}, y3: {ry3}")print(f"x4: {rx4}, y4: {ry4}")turtle.penup()turtle.goto(rx1, ry1)turtle.dot(3, "blue")turtle.pendown()turtle.goto(rx2, ry2)turtle.dot(3, "blue")turtle.goto(rx3, ry3)turtle.dot(3, "blue")turtle.goto(rx4, ry4)turtle.dot(3, "blue")turtle.goto(rx1, ry1)turtle.hideturtle()

现在我们获得了坐标接下来我们应该如何把con_po融入到contains_points

variable in function should be lowercase 函数变量应该小写
六、结合后的contains_points
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
def contains_points(self,other_x,other_y):rx1, ry1 = self.__x - self.__width / 2, self.__height / 2 + self.__yrx2, ry2 = abs(rx1) + self.__width, ry1rx3, ry3 = rx2, ry2 - self.__heightrx4, ry4 = rx1, ry3judge_line1 = ((rx1 - rx2) * (other_y - ry2)) - ((other_x - rx2) * (ry1 - ry2))judge_line2 = ((rx2 - rx3) * (other_y - ry3)) - ((other_x - rx3) * (ry2 - ry3))judge_line3 = ((rx3 - rx4) * (other_y - ry4)) - ((other_x - rx4) * (ry3 - ry4))judge_line4 = ((rx4 - rx1) * (other_y - ry1)) - ((other_x - rx1) * (ry4 - ry1))if judge_line1 > 0 and judge_line2 >0 and judge_line3 >0 and judge_line4 >0:print(f" r2 x: {other_x} y: {other_y} is in r1")else:print(f" r2 x: {other_x} y: {other_y} is not in r1")
七、本题最后的代码
- 先从网上找一下Statement expected, found Py:DEDENT
- TAB还是空格呢??
- 小小总结
- 如何拆分矩形的四个点呢.
- 我们来小小的测试一下这个函数
- 结果
- 出在哪里呢???
- 修改完成
- variable in function should be lowercase 函数变量应该小写
这次偷懒了.就不再分析下面的问题了.但是代码写全了
class Rectangle2D:# 初始化当前矩形的信息def __init__(self, x, y, width, height):self.__x = xself.__y = yself.__width = widthself.__height = height# 获得当前矩形的面积def get_area(self):return self.__width * self.__height# 获得当前矩形的周长def get_perimeter(self):return (self.__width + self.__height) * 2# 装一下,打印该矩形的x,y和长宽def print_text(self, name):print(f"Enter x{name}, y{name}, width{name}, height{name}: {self.__x}, {self.__y}, {self.__width},"f" {self.__height}")# 绘制当前矩形def 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, "black")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.left(270)turtle.penup()turtle.goto(x_1, y_1)turtle.dot(6, "blue")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()def get_x(self):return self.__xdef get_y(self):return self.__y# 为了计算4对坐标设计def con_po(self):rx1, ry1 = self.__x - self.__width / 2, self.__height / 2 + self.__yrx2, ry2 = abs(rx1) + self.__width, ry1rx3, ry3 = rx2, ry2 - self.__heightrx4, ry4 = rx1, ry3print(f"x1: {rx1}, y1: {ry1}")print(f"x2: {rx2}, y2: {ry2}")print(f"x3: {rx3}, y3: {ry3}")print(f"x4: {rx4}, y4: {ry4}")turtle.penup()turtle.goto(rx1, ry1)turtle.dot(3, "blue")turtle.pendown()turtle.goto(rx2, ry2)turtle.dot(3, "blue")turtle.goto(rx3, ry3)turtle.dot(3, "blue")turtle.goto(rx4, ry4)turtle.dot(3, "blue")turtle.goto(rx1, ry1)turtle.hideturtle()turtle.done()# 实现另一个矩形的x,y坐标与当前矩形x,y对比def contains_points(self, other_x, other_y):rx1, ry1 = self.__x - self.__width / 2, self.__height / 2 + self.__yrx2, ry2 = abs(rx1) + self.__width, ry1rx3, ry3 = rx2, ry2 - self.__heightrx4, ry4 = rx1, ry3judge_line1 = ((rx1 - rx2) * (other_y - ry2)) - ((other_x - rx2) * (ry1 - ry2))judge_line2 = ((rx2 - rx3) * (other_y - ry3)) - ((other_x - rx3) * (ry2 - ry3))judge_line3 = ((rx3 - rx4) * (other_y - ry4)) - ((other_x - rx4) * (ry3 - ry4))judge_line4 = ((rx4 - rx1) * (other_y - ry1)) - ((other_x - rx1) * (ry4 - ry1))if judge_line1 > 0 and judge_line2 > 0 and judge_line3 > 0 and judge_line4 > 0:print(f"r1 contains the center of r2? True")else:print(f"r1 contains the center of r2? False")# 包括面积、周长计算
def main():# x1, y1, width1, height1 = eval(input("Enter x1,y1,width1,height1: "))# x2, y2, width2, height2 = eval(input("Enter x2,y2,width2,height2: "))x1, y1, width1, height1 = 9, 1.3, 10, 35.3x2, y2, width2, height2 = 1.3, 4.3, 4, 5.3r1 = Rectangle2D(x1, y1, width1, height1)r1.print_text(1)area_r1 = r1.get_area()print(f"Area for r1 is {area_r1}")perimeter_r1 = r1.get_perimeter()print(f"Perimeter for r1 is {perimeter_r1}")r2 = Rectangle2D(x2, y2, width2, height2)r2.print_text(2)area_r2 = r2.get_area()print(f"Area for r2 is {area_r2}")perimeter_r2 = r2.get_perimeter()print(f"Perimeter for r2 is {perimeter_r2}")r1.contains_points(r2.get_x(), r2.get_y())main()

明天继续,加油通知们.
相关文章:
《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
希望这个下集里能有完整的代码 一、containsPoint实现 先从网上找一下Statement expected, found Py:DEDENTTAB还是空格呢??小小总结如何拆分矩形的四个点呢.我们来小小的测试一下这个函数结果出在哪里呢???修改完成variable in function should be lowercase 函数变量应该…...
【C++】入门基础介绍(上)C++的发展历史与命名空间
文章目录 1. 前言2. C发展历史2. 1 C版本更新特性一览2. 2 关于C23的一个小故事: 3. C的重要性3. 1 编程语言排行榜3. 2 C在工作领域中的应用 4. C学习建议和书籍推荐4. 1 C学习难度4. 2 学习书籍推荐 5. C的第一个程序6. 命名空间6. 1 namespace的价值6. 2 namespace的定义6. …...
dll动态库加载失败导致程序启动报错以及dll库加载失败的常见原因分析与总结
目录 1、问题说明 2、dll库的隐式加载与动态加载 2.1、dll库的隐式加载 2.2、dll库的显式加载 3、使用Process Explorer查看进程加载的dll库信息以及动态加载的dll库有没有加载成功 3.1、使用Process Explorer查看进程加载的dll库信息 3.2、使用Process Explorer查看动态…...
SAP MM学习笔记 - 豆知识10 - OMSY 初期化会计期间,ABAP调用MMPV/MMRV来批量更新会计期间(TODO)
之前用MMRV,MMPV来一次一个月来修改会计期间。 如果是老的测试机,可能是10几年前的,一次1个月,更新到当前期间,搞个100多次,手都抖。 SAP MM学习笔记 - 错误 M7053 - Posting only possible in periods 2…...
Pytorch实现RNN实验
一、实验要求 用 Pytorch 模块的 RNN 实现生成唐诗。要求给定一个字能够生成一首唐诗。 二、实验目的 理解循环神经网络(RNN)的基本原理:通过构建一个基于RNN的诗歌生成模型,学会RNN是如何处理序列数据的,以及如何在…...
四、Drf认证组件
四、Drf认证组件 4.1 快速使用 from django.shortcuts import render,HttpResponse from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.authentication import BaseAuthentication from rest_framework.exception…...
C++:静态成员
静态成员涉及到的关键字尾static 静态成员变量要在类外初始化 去掉static关键字类型类名::变量名 静态成员变量不属于任何对象 所有对象共享一份 静态成员可以不通过对象直接访问 类名::成员名 静态成员依旧受访问修饰符的约束 …...
28 Vue3之搭建公司级项目规范
可以看到保存的时候ref这行被提到了最前面的一行 要求内置库放在组件的前面称为auto fix,数组new arry改成了字面量,这就是我们配置的规范 js规范使用的是airbnb规范模块使用的是antfu 组合prettier&eslint airbnb规范: https://github…...
【pytorch】张量求导3
再接上文,补一下作者未补完的矩阵运算的坑。 首先贴一下原作者的图,将其转化为如下代码: import torch import torch.nn as nn import torch.optim as optim# 定义一个简单的两层神经网络 class TwoLayerNet(nn.Module):def __init__(self):super(TwoLayerNet, self).__in…...
Servlet——springMvc底层原理
我们也先了解一下什么的动态资源,什么是静态资源。 静态资源:无需程序运行就可以获取的资源(照片、html、css、js等) 动态资源:需要通关程序运行才可以获得的资源。 (其实动态、静态的资源都与Servlet有…...
Json 在线可视化工具,分享几个
文章目录 1.json.cn2.json4u.cn3.jsonvisual.com4.jsoncrack5.altearius.github.io6.json.wanvb.com 前序:本文是对多种 Json 在线可视化工具 的介绍、分享。Json官网 https://www.json.org/json-en.html 个人比较中意第四款: https://jsoncrack.com/ed…...
LLM | llama.cpp 安装使用(支持CPU、Metal及CUDA的单卡/多卡推理)
1. 详细步骤 1.1 安装 cuda 等 nvidia 依赖(非CUDA环境运行可跳过) # 以 CUDA Toolkit 12.4: Ubuntu-22.04/24.04(x86_64) 为例,注意区分 WSL 和 Ubuntu,详见 https://developer.nvidia.com/cuda-12-4-1-download-archive?targ…...
矩阵求解复数(aniwoth求解串扰)
所以这种求解串扰的格式是因为,有串扰的共轭项在方程组中 复数共轭项的作用,但是这是二次方程,...
Redis: Sentinel哨兵监控架构及环境搭建
概述 在主从模式下,我们通过从节点只读模式提高了系统的并发能力并发不断增加,只需要扩展从节点即可,只要主从服务器之间,网络连接正常主服务器就会将写入自己的数据同步更新给从服务器,从而保证主从服务器的数据相同…...
C++ 语言特性30 - 模板介绍
目录 一:C11 之前的模板特性 1. 函数模板: 2. 类模板: 3. 模板特化: 4. 模板参数: 5. 模板元编程: 二:C11的模板特性 1. 变长模板(Variadic Templates)ÿ…...
算法笔记(七)——哈希表
文章目录 两数之和判定是否互为字符重排存在重复元素存在重复元素 II字母异位词分组 哈希表:一种存储数据的容器; 可以快速查找某个元素,时间复杂度O(1); 当频繁查找某一个数时,我们可以使用哈希表 创建一个容器&#…...
【基础算法总结】链表篇
目录 一, 链表常用技巧和操作总结二,算法原理和代码实现2.两数相加24.两两交换链表中的节点143.重排链表23.合并k个升序链表25.k个一组翻转链表 三,算法总结 一, 链表常用技巧和操作总结 有关链表的算法题也是一类常见并且经典的题…...
探索路由器静态IP的获取方式
在网络配置中,路由器静态IP是一个重要的概念。对于家庭网络或办公室网络而言,正确配置静态IP地址是确保网络稳定性和管理的关键步骤之一。但是,很多人对于静态IP地址的获取方式可能感到困惑。在本文中,我们将探讨它的获取途径&…...
Vivado - JTAG to AXI Master (GPIO、IIC、HLS_IP)
目录 1. 简介 2. JTAG to AXI Master 2.1 添加 IP Core 2.2 基本TCL命令 2.2.1 复位 JTAG-to-AXI Master 2.2.2 创建并运行写入传输事务 2.2.3 创建并运行读取传输事务 2.2.4 命令列表 2.3 帮助信息 2.4 创建TCL读写程序 2.4.1 Read proc 2.4.2 Write proc 2.4.3 …...
Java中JWT(JSON Web Token)的运用
目录 1. JWT的结构2. JWT的优点3. JWT的流转过程4.具体案例一、项目结构二、依赖配置三、用户模型四、JWT工具类五、JWT请求过滤器六、安全配置七、身份验证控制器八、测试JWT JWT(JSON Web Token)是一种开放标准(RFC 7519)&#…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
