用初中代数结合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()
执行结果:

还可以通过坐标轴直线的平移、翻转等定律绘制出更多的图形。用数学的方式来解决算法问题会让问题变得更简单有趣。
用初中代数结合python画出正方形的更多相关文章
- 利用python画出动态高优先权优先调度
之前写过一个文章. 利用python画出SJF调度图 动态高度优先权优先调度 动态优先权调度算法,以就绪队列中各个进程的优先权作为进程调度的依据.各个进程的优先权在创建进程时所赋予,随着进程的推进或其 ...
- python画出心形图
程序员表达爱的方式真是多种多样.比如,用python来画一个心型,献给梦中的情人,代码如下: from turtle import * pensize(1) pencolor('red') fillc ...
- 程序员如何 10 分钟用 Python 画出蒙娜丽莎?
之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ...
- 用python画出全球疫情趋势变化图
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:谦睿科技 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- 利用python画出SJF调度图
最先发布在csdn.本人原创. https://blog.csdn.net/weixin_43906799/article/details/105510046 SJF算法: 最短作业优先(SJF)调度 ...
- python运用turtle 画出汉诺塔搬运过程
python运用turtle 画出汉诺塔搬运过程 1.打开 IDLE 点击File-New File 新建立一个py文件 2.向py文件中输入如下代码 import turtle class Stac ...
- python—networkx:在一张图中画出多个子图
通过plt.subplot能够在一张图中画出多个子图 #coding: utf-8 #!/usr/bin/env python """ Draw a graph with ...
- 用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我被狗咬了 在谈及数据可视化的时候,我们通常都会使用到matplo ...
- 从BUG工具redmine上获取数据后借助python模块pycha 画出BUG分析类报表
整体代码比较冗长,但是很好读.写的方法全是按照BUG分类去写的.所以写死了,凑合看吧,画出饼图,树状图和生成对应的数据excel,希望大家举一反三能帮助自己分析BUG #__author__ = 'x ...
随机推荐
- dedecms mvc 开发
目录结构说明: |_app |___control 控制器(C) |___model 模型(M) |___templates 视图模板(V) |_ ...
- mycat 主从切换分析过程
67 68互为主从 66为67从 区分双主写的数据,设置不同的自增id 67: SET @@auto_increment_offset=2;SET @@auto_increment_increment ...
- python 字典中的get()方法
https://blog.csdn.net/weixin_38705903/article/details/79231551
- .Net异步实例讲解
说起异步,Thread,Task,async/await,IAsyncResult 必须掌握 1.线程(Thread) 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行:对于比较耗时的操作( ...
- 《JavaScript 高级程序设计》读书笔记五 引用类型
一 Object类型 a.两种创建方式: 1.new+构造函数Object; 2.对象字面量表示法: b.两种访问属性方式: 1.点表示法(.属性): 2.方括号([“属性”]): 二 Arr ...
- EmguCV使用Stitcher类来拼接图像
using System; using System.Windows; using System.Collections.Generic; using System.ComponentModel; u ...
- VSCode插件开发全攻略(十)打包、发布、升级
更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...
- 【备忘】ASP.NET MVC 5 升级到 ASP.NET Core MVC 的部分变化
正在将一个 .net 4.5 的项目(MVC 5)升级到 .net core 2.1,中间遇到了许多的修改,记在下面,帮大家少走弯路. System.Drawing 下面很多类已经不存在(如Bitma ...
- 【转】odoo nginx 配置
## OpenERP backend ## upstream odoo { server 127.0.0.1:8069 weight=1 fail_timeout=0; } upstream odoo ...
- Java实现链表的常见操作算法
链表分为单链表,双向链表和循环链表,是一种链式存储结构,由一个个结点链式构成,结点包含数据域和指针域,其中单链表是只有一个指向后驱结点的指针,双向链表除头结点和尾结点外,每个结点都有一个前驱指针和一个 ...