zoukankan      html  css  js  c++  java
  • 用初中代数结合python画出正方形

    在屏幕上打印类似下面的图形:

    常规画正方形的算法:

      这几乎是初学所有计算机语言时都会遇到的问题。算法都大致类似,就是找出打印规律然后用计算机语句表达出来。最常规的算法是:输入数字n就打印n行,首行和尾行打印n个*号,其它行中打印收尾*号,其他位置打印空格。实现如下:

    s=int(input("num:"))
    for i in range(s):  #Count.Record how many times you enter.
        if i == 0 or i == s-1:  #If i is 0 or you enter minus 1,print '*' in all line and without wrap
            for i in range(s):
                print('*',end='')
            print('')
        else:
            print('*',end='')   #先打印第一个*
            for i in range(s-2):    #循环打印空格
                print(' ',end='')
            print('*')  #打印最后的*

    用初中代数的算法来解决:

      初中代数课时老师在黑板上画的最多的就是横纵坐标轴了,横轴通常表示为x轴,纵轴通常表示为y轴,如下图:

      而在这个问题中屏幕打印空间也可以抽象为一个坐标轴,因为打印顺序是从上往下,从左自右的,所以在这个打印空间中的坐标轴将与代数中的坐标轴有所翻转:

      根据这个方法并给出范围我们就能很容易的画出一条x=y的直线:

    s=int(input("num:"))
    for y in range(s):  #Count.Record how many times you enter.
        for x in range(s): #x,y相当于是定义打印空间
            if y==x: #满足此条件的时打印*号
                print("*",end='')
            else:
                print(" ",end='')
        print()

      执行结果:

      这样,一条斜线就打印出来了,下面思考:正方形其实就是由四条直线围成的,分别是:x=n、y=n、x=0、y=0:

      将这些条件写入if语句:

    s=int(input("num:"))
    for y in range(s):  #Count.Record how many times you enter.
        for x in range(s):
            if y==0 or x==0 or y==s-1 or x==s-1: #类似于在二维坐标轴上用4条直线绘制出正方形
                print("*",end='')
            else:
                print(" ",end='')
        print()

      执行结果:

      用代数的算法还能画出很多图形,如等腰三角形:

    s=int(input("num:"))
    for y in range(s):
        for x in range(s):
            if y==2*x-s+1 or y==-2*x+s-1 or y==s-1:
                print("*",end='')
            else:
                print(" ",end="")
        print()

      执行结果:

      还可以通过坐标轴直线的平移、翻转等定律绘制出更多的图形。用数学的方式来解决算法问题会让问题变得更简单有趣。

  • 相关阅读:
    shell学习(15)- eval及shell No such file or directory解决办法
    30张图带你彻底理解红黑树
    linux中$@,$*,$0,$$,$?参数的含义
    QPS,TPS,吞吐量,响应时间详解及关系
    shell学习(14)- who
    SpringBoot 入门
    创建 Java 项目
    部分 GIT 命令
    Spark Executor Task 的执行和数量
    Ubuntu 18 单机安装 HDP 3
  • 原文地址:https://www.cnblogs.com/readygood/p/10196266.html
Copyright © 2011-2022 走看看