zoukankan      html  css  js  c++  java
  • Python拓展——import导入包之random随机数和turtle海龟作图(2)

    hello大家好,某一天,一个叫小蒟蒻的人想起了这个网站,请把失踪人口回归打在公屏上。。。

    Q:为啥那么久没更新

    A:因为(我懒)前一阵子小蒟蒻的主课不是很好,所以一直在学习+补课5555

    PS:在写这段话的时候是10月1日国庆节,所以小蒟蒻也在这里祝大家节日快乐!

    那话不多说了,进入正题


    先来回顾一下上篇博文的内容吧,上次我们学习了Python中两个包:random 和 turtle

    random的几个用法:

    1、a = random.randint(1,10) # 在1~10之间随机取一个整数赋值到 a 中

    2、a = random.choice([1,2,3,4]) # 在几个选定的值中随机挑选一个赋值到 a 中

    3、a = random.uniform(1,3) # 在1~3之间随机取一个浮点数赋值到 a 中

    turtle的几个用法:

    1、turtle.forward(100) # 海龟向前走100格

    2、turtle.left(或者right)(90) # 海龟左(右)转90度

    3、turtle.done() # 完成作图后保留作图窗口

    其实都很简单的吧(*^▽^*)


    这篇博文,我们要学习熟练应用 turtle 包!画出这样的效果:

    哇啊啊啊!这什么东西,看上去好复杂QAQ

    复杂不可怕,小蒟蒻带大家一步一步来,包学包会!

    首先我们仔细观察一下这个图,其实是由很多正方形构成的!

    我用红笔勾出了其中一个:

    勾的不太好,大家将就看一下吧。。。

    不管怎么说,这么看应该很清楚了吧!

    接着我们来读一下代码:

    import turtle
    num = int(input('你想画几个正方形(360的因数)'))
    color = input('什么颜色(输入red、blue、yellow、green等)')
    size = int(input('笔的粗细(1、2、3、4、5等)'))
    turtle.speed(100)
    turtle.pensize(size)
    turtle.pencolor(color)
    for i in range(num):
        for j in range(4):
            turtle.forward(100)
            turtle.left(90)
        turtle.right(360/num)
    turtle.done()

    有人就要说了:小蒟蒻!我们才刚学多少,你就让我们学这么长的代码!还有没有天理了!

    欸,看着虽然长,但请你仔细读一下,大多数是我们学过的呀!

    实在忘记了也没事,我们还是一行行来解读!

    import turtle 没什么问题,导入 turtle 包

    num = int(input('你想画几个正方形(360的因数)'))
    color = input('什么颜色(输入red、blue、yellow、green等)')
    size = int(input('笔的粗细(1、2、3、4、5等)'))

    这就是最简单的输入,也没问题

    重点来了:

    turtle.speed(100)
    turtle.pensize(size)
    turtle.pencolor(color)

    这三行代码是新知识,我来分别说一下它们的作用:

    1、turtle.speed(100) # 把画图速度设置为100

    原先 turtle 画图的速度默认为1,画完一张图要等很长时间(1分钟左右),这行代码就是加快画图速度

    2、turtle.pensize(size) # 设置笔的粗细为 size ( size 为 int 类型)

    Tips:size 为之前输入进来的值

    原先 turtle 画图笔的粗细默认为1,可以根据需求或美观而改变

    3、turtle.pencolor(color) # 设置笔的颜色为 color ( color 为 str 类型)

    原先 turtle 画图画笔颜色默认为黑色,也可以根据需求或美观而改变

    Tips:color 为之前输入进来的值

    现在大家明白了吧O(∩_∩)O

    那我们继续分析!

    for i in range(num):
        for j in range(4):
            turtle.forward(100)
            turtle.left(90)
        turtle.right(360/num)

    这里是一个嵌套循环,我们先看里面那层吧(#^.^#)

    里面这段代码的效果大家可以试着推一下,有条件的童鞋也可以放到自己的编译器里试一下!

    其实,它的功能就是画一个边长为100的正方形!

    里面的循环看完了,那我们看外面那层

    有可能又有小伙伴要问了:小蒟蒻小蒟蒻!这个 turtle.right(360/num) 是不是写错了?怎么没有和上面对齐啊?

    诶,这可不是写错了,这是因为我不想让这行代码在里面的那层循环里运行!

    说白了,这行代码是归外面那层循环管的,给大家画个图就明白了!

    相信大家这样应该能看懂了吧!

    这些都不算什么,最重要的是,我们要理解这个外层循环到底要干什么

    首先循环 num 次,也就是画 num 个正方形!

    敲黑板,划重点!!!

    turtle.right(360/num) 为什么括号里是 360/num 呢?

    这里涉及到一个小学数学问题:我要画 num 个正方形围成360度,每两个正方形之间差多少度呢?

    答:360/num 度!

    所以为什么要这样写大家明白了吧ヾ(✿゚▽゚)ノ

    那么循环我们就也分析完了

     

    turtle.done(),这个小蒟蒻就不多阐述了,之前的博文有详细介绍!

    最后给大家一个思考的问题:为什么在输入 num 的时候强调了必须是360的因数呢?


    好了,今天的内容就到这里啦,如果有什么问题就在评论区写出来,小蒟蒻看到后会第一时间回复的!

    如果觉得写得不错的话就点个赞再走吧,拜拜┏(^0^)┛

  • 相关阅读:
    10个你可能不知道的JavaScript小技巧
    QuickFlow2.0 安装指南
    QuickFlow教程(5): RuleDriven活动,角色提供程序自定义,邮件模板
    QuickFlowDesigner教程(2)工作流表单快速自定义
    QuickFlowDesigner1.0(Build091025)发布
    QuickFlow2.0无代码工作流设计器QuickFlowDesigner1.0 beta publish
    QuickFlowDesigner教程(3)UI代码和工作流交互
    QuickFlow Aspx Form example deploy wizard
    多选用户字段的Caml查询问题
    QuickFlowDesigner教程(4)如何用代码控制活动操作人
  • 原文地址:https://www.cnblogs.com/tongxc/p/15361574.html
Copyright © 2011-2022 走看看