《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)&#…...

CSS3练习--电商web
免责声明:本文仅做分享! 目录 小练--小兔鲜儿 目录构建 SEO 三大标签 Favicon 图标 布局网页 版心 快捷导航(shortcut) 头部(header) logo 导航 搜索 购物车 底部(footer࿰…...

Linux 默认内核版本更改
随笔记录 目录 1. 背景介绍 2. 解决方法 2.1 查看所有可用版本 2.2 安装指定版本内核 2.3 检查当前内核列表 2.4 检查当前默认内核 2.5 设置新的默认内核 2.6 确认内核是否成功加载 2.7 重启 2.8 删除其他版本内核 1. 背景介绍 linux 一般安装多个内核版本&…...

【ubuntu】修改用户名、主机名、主文件夹名、登录名、密码
目录 1.他们是什么 2.修改方法 2.1 修改用户密码 2.2 修改主机名 2.2.1 切换到root用户 2.2.2 修改名称 2.3 修改用户名 主文件夹名 登录名 2.2.1 sudoers 2.2.2 passwd 2.2.3 shadow 2.2.4 group 2.2.5 修改主文件夹名 3.重启 1.他们是什么 (1…...

深入理解JavaScript 的原型继承
JavaScript 的原型链继承机制和 Java 的类继承机制有明显的区别,虽然它们都用于实现对象之间的继承,但它们的实现方式、概念以及运行机制都不同。 1. JavaScript 的原型继承 JavaScript 是基于原型链的继承,主要依赖对象的 __proto__ 属性或…...

Error while loading conda entry point: conda-libmamba-solver
问题 解决方法 conda install --solverclassic conda-forge::conda-libmamba-solver conda-forge::libmamba conda-forge::libmambapy conda-forge::libarchive...

FANUC机器人—PCDK
前言 FANUC提供了一种使用其 PC 开发人员套件 (PCDK) 从 PC 命令和配置机器人的简单方法。该套件允许 PC 访问机器人上的变量、寄存器、IO、程序、位置和警报;接下来,我将如何开始使用 C#。 连接到机器人 将以下突出显示的行添加…...

如何在wsl中使用beyond compare
寫一個名為bc4的文件,內容如下: #!/bin/sh /mnt/c/Program\ Files/Beyond\ Compare\ 4/BComp.com $(wslpath -aw $1) $(wslpath -aw $2)bc4 file1 file2參考:https://forum.scootersoftware.com/forum/beyond-compare-4-discussion/version-…...

CNN+Transformer在自然语言处理中的具体应用
在自然语言处理(NLP)领域,CNN(卷积神经网络)和Transformer架构各自有着广泛的应用。NLP中的具体应用: CNN在NLP中的应用 1.文本分类:CNN可以用于文本分类任务,如情感分析、垃圾邮件…...

DotNetty ChannelRead接收数据为null
问题:C#使用Dotnetty和Java netty服务器通讯,结果能正确发送数据到服务器,却始终接收不到服务器返回的数据。 解决:一定一定要注意服务器和客户端使用的编码一定要完全一样才行 我先前在客户端添加了StringDecoder,服务器却没有…...

3分钟学会下载 blender
1. blender简介 Blender是一款开源的3D创作套件,它由Blender Foundation维护,并得到了全球志愿者和专业开发者的支持。Blender广泛应用于3D模型的制作、动画、渲染、视频编辑、游戏创建、模拟、 composting以及3D打印等多个领域。 功能特点:…...