《python语言程序设计》2018版第6章第41题,使用定以再程序清单6-14中的函数来显示一个中心在(-75,0),高和宽为100的矩形以及圆心为(40,0)而半径为50的圆。

在这里插入图片描述

全套代码-之前做的5.47题

一个随机将点投射到一定范围的代码5.47题作为参考

import turtle

turtle.penup()
turtle.goto(-60, 50)
turtle.pendown()
turtle.goto(60, 50)
turtle.goto(60, -50)
turtle.goto(-60, -50)
turtle.goto(-60, 50)
turtle.penup()
for i in range(1, 10):
    a = random.randint(-60, 60)
    b = random.randint(-50, 50)
    turtle.goto(a, b)
    turtle.dot(6, "red")
turtle.done()

在这里插入图片描述

全套代码

顺序毕竟混乱

def drawRectangle(x, y, width, height, color="black"):
    turtle.penup()
    turtle.goto(x, y)
    turtle.dot(6, "blue")
    turtle.goto(x - width / 2, y - height / 2)
    turtle.pendown()
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    turtle.left(90)
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    # 如果你把这行代码删除,你再运行,一定很好玩
    turtle.right(270)


def judgmentCon(judgment):
    if judgment == "R".lower():
        xIn, yIn = eval(input("Enter x,y coordinate: "))
        widthIn, heightIn = eval(input("Enter width and height: "))
        pointInNum = eval(input("Enter point number: "))
        pointInRec(xIn, yIn, widthIn, heightIn, pointInNum)
    elif judgment == "C".lower():
        xInC, yInC = eval(input("Enter x,y coordinate: "))
        radiusC = eval(input("Enter radius: "))
        pointInNumC = eval(input("Enter point number: "))
        pointInCircle(xInC, yInC, radiusC, pointInNumC)


# 我们做个改变增加一下识别是矩形还是圆形
def pointInRec(xC, yC, width, height, pointNum):
    # 一定要带int要不这个公式出来都是浮点数
    aPointNegative = int(xC - width / 2)
    aPointPositive = int(xC + width / 2)
    bPointNegative = int(yC - height / 2)
    bPointPositive = int(yC + height / 2)
    turtle.penup()
    turtle.goto(xC, yC)
    turtle.dot(6, "blue")
    turtle.goto(xC - width / 2, yC - height / 2)
    turtle.pendown()
    turtle.pendown()
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    turtle.left(90)
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    # 如果你把这行代码删除,你再运行,一定很好玩
    turtle.right(270)
    turtle.penup()

    for i in range(1, pointNum):
        a = random.randint(aPointNegative, aPointPositive)
        b = random.randint(bPointNegative, bPointPositive)
        turtle.goto(a, b)
        turtle.dot(6, "red")


def pointInCircle(xC, yC, rC, pointNumC):
    turtle.penup()
    turtle.goto(xC, yC)
    turtle.dot(6, "blue")
    turtle.goto(xC, yC - rC)
    turtle.pendown()
    turtle.circle(rC)
    turtle.penup()
    for i in range(1, pointNumC):
        a = random.randint(0, 50)
        b = random.randint(-30, 30)
        turtle.goto(a, b)
        turtle.dot(6, "red")


def main():
    a = input("Enter Rectangle is R and Circle is C: ")
    judgmentCon(a)


main()


turtle.hideturtle()
turtle.done()

对代码拆分-绘制矩形不带随机点

def drawRectangle(x, y, width, height, color="black"):
    turtle.penup()
    turtle.goto(x, y)
    turtle.dot(6, "blue")
    turtle.goto(x - width / 2, y - height / 2)
    turtle.pendown()
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    turtle.left(90)
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    # 如果你把这行代码删除,你再运行,一定很好玩
    turtle.right(270)

在这里插入图片描述

对代码拆分-绘制圆形带随机点

def pointInCircle(xC, yC, rC, pointNumC):
    turtle.penup()
    turtle.goto(xC, yC)
    turtle.dot(6, "blue")
    turtle.goto(xC, yC - rC)
    turtle.pendown()
    turtle.circle(rC)
    turtle.penup()
    for i in range(1, pointNumC):
        a = random.randint(0, 50)
        b = random.randint(-30, 30)
        turtle.goto(a, b)
        turtle.dot(6, "red")

在这里插入图片描述
对不起我才发现我的矩形def是没有带随机投射原点的。而画圆的时候自己带了随机画原点
还有要说明。我这个在园中放随机点,因为面积坐标的问题。没有很好的解决

对代码拆分-绘制矩形带随机点

def pointInRec(xC, yC, width, height, pointNum):
    # 一定要带int要不这个公式出来都是浮点数
    aPointNegative = int(xC - width / 2)
    aPointPositive = int(xC + width / 2)
    bPointNegative = int(yC - height / 2)
    bPointPositive = int(yC + height / 2)
    turtle.penup()
    turtle.goto(xC, yC)
    turtle.dot(6, "blue")
    turtle.goto(xC - width / 2, yC - height / 2)
    turtle.pendown()
    turtle.pendown()
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    turtle.left(90)
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(height)
    # 如果你把这行代码删除,你再运行,一定很好玩
    turtle.right(270)
    turtle.penup()

    for i in range(1, pointNum):
        a = random.randint(aPointNegative, aPointPositive)
        b = random.randint(bPointNegative, bPointPositive)
        turtle.goto(a, b)
        turtle.dot(6, "red")

在这里插入图片描述

对代码拆分-判读需要的画矩形还是画圆形

def judgmentCon(judgment):
    if judgment == "R".lower():
        xIn, yIn = eval(input("Enter x,y coordinate: "))
        widthIn, heightIn = eval(input("Enter width and height: "))
        pointInNum = eval(input("Enter point number: "))
        pointInRec(xIn, yIn, widthIn, heightIn, pointInNum)
    elif judgment == "C".lower():
        xInC, yInC = eval(input("Enter x,y coordinate: "))
        radiusC = eval(input("Enter radius: "))
        pointInNumC = eval(input("Enter point number: "))
        pointInCircle(xInC, yInC, radiusC, pointInNumC)

在这里插入图片描述

最后运行效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电饭叔

谢谢各位兄弟们的关注,谢谢破费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值