gaaa515 2022-02-13 21:45 采纳率: 92.3%
浏览 29
已结题

一个Python问题,求解答

问题遇到的现象和发生背景

在XY坐标上放置一个矩形。 上下的边与X轴平行,左右的边与Y轴平行。
对3-1中的代码2中的Rect的class做如下修改。
Instance变量
x, y: 为长方形左上顶点のx,y坐标
w, h: 和代码2中的宽和高相同
初始化method
调出时,最初的两个参数xy的值和之后的两个参数wh的值进行初始化
points()
调出时没有参数
返回每个顶点的x,y坐标的tuple,顺序为左上、右上、右下、左下。

在3-2中创建两个Rect的class的Instance。 参数的值从执行结果中确定。

问题相关代码,请勿粘贴截图

代码2

 
# 2-1
class Rect:
    def show(self):
        return "w:%s, h:%s" % (self.w, self.h) 
# 2-2 
r1 = Rect()
r1.w = 3
r1.h = 8
r2 = Rect()
r2.w = 5
r2.h = 12

# 2-3 
print(f'r1: {r1.show()}')
print(f'r2: {r2.show()}')
 

代码3

# 3-1

    
# 3-2 写出两个Rect_class的Instance,参数值参照输出结果


# 3-3 输出各个Instance的值
print(f'r1: {r1.show()}, {r1.points()}')
print(f'r2: {r2.show()}, {r2.points()}')

运行结果及报错内容
r1: w:5, h:3, ((5, 10), (10, 10), (10, 7), (5, 7))
r2: w:3, h:2, ((12, 4), (15, 4), (15, 2), (12, 2))

  • 写回答

1条回答 默认 最新

  • 「已注销」 2022-02-13 22:08
    关注

    以实现如下效果,可以的话请点击采纳答案。

    img

    # 3-1
    class Rect:
        def __init__(self, x, y, w, h) -> None:
            self.x = x
            self.y = y
            self.w = w
            self.h = h
    
        def points(self):
            return ((self.x, self.y), (self.x+self.w, self.y), (self.x+self.w, self.y-self.h), (self.x, self.y-self.h))
    
        def show(self):
            return "w:%s, h:%s" % (self.w, self.h)
    
    
    # 3-2 写出两个Rect_class的Instance,参数值参照输出结果
    r1 = Rect(5, 10, 5, 3)
    
    r2 = Rect(12, 4, 3, 2)
    
    
    # 3-3 输出各个Instance的值
    print(f'r1: {r1.show()}, {r1.points()}')
    print(f'r2: {r2.show()}, {r2.points()}')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 2月13日