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

常规画正方形的算法:

  这几乎是初学所有计算机语言时都会遇到的问题。算法都大致类似,就是找出打印规律然后用计算机语句表达出来。最常规的算法是:输入数字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画出正方形的更多相关文章

  1. 利用python画出动态高优先权优先调度

    之前写过一个文章. 利用python画出SJF调度图 动态高度优先权优先调度 动态优先权调度算法,以就绪队列中各个进程的优先权作为进程调度的依据.各个进程的优先权在创建进程时所赋予,随着进程的推进或其 ...

  2. python画出心形图

    程序员表达爱的方式真是多种多样.比如,用python来画一个心型,献给梦中的情人,代码如下: from turtle import * pensize(1) pencolor('red') fillc ...

  3. 程序员如何 10 分钟用 Python 画出蒙娜丽莎?

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路   ...

  4. 用python画出全球疫情趋势变化图

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:谦睿科技 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  5. 利用python画出SJF调度图

    最先发布在csdn.本人原创. https://blog.csdn.net/weixin_43906799/article/details/105510046 SJF算法: 最短作业优先(SJF)调度 ...

  6. python运用turtle 画出汉诺塔搬运过程

    python运用turtle 画出汉诺塔搬运过程 1.打开 IDLE 点击File-New File 新建立一个py文件 2.向py文件中输入如下代码 import turtle class Stac ...

  7. python—networkx:在一张图中画出多个子图

    通过plt.subplot能够在一张图中画出多个子图 #coding: utf-8 #!/usr/bin/env python """ Draw a graph with ...

  8. 用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我被狗咬了 在谈及数据可视化的时候,我们通常都会使用到matplo ...

  9. 从BUG工具redmine上获取数据后借助python模块pycha 画出BUG分析类报表

    整体代码比较冗长,但是很好读.写的方法全是按照BUG分类去写的.所以写死了,凑合看吧,画出饼图,树状图和生成对应的数据excel,希望大家举一反三能帮助自己分析BUG #__author__ = 'x ...

随机推荐

  1. SecureCRT两步验证自动登录脚本

    简介 用于解决 Google Authenticator 的两步验证登录.涉及到密码,不建议脚本保存到公共环境. 安装oathtool Mac $ brew install oath-toolkit ...

  2. sudo -iu [用户] 命令无法正常切换到用户目录的原因

    今天干活时遇到一个问题,在sudo -iu [用户]命令执行后无法切换到用户对应的[ 用户@机器 ~$ ]命令行 .bashrc已正常配置为 if [ -f /etc/bashrc ]; then . ...

  3. jupyter notebook常用快捷键

    阅读目录 命令模式 (按键 Esc 开启) 编辑模式 ( Enter 键启动) Jupyter Notebook 的快捷键 使用前需要进行安装: pip install jupyter   (前提是你 ...

  4. web实验博客3.css-position

    css-position属性为块级元素的定位提供了可能,今天我将讲述我所了解的position属性. div.h.p元素都可以称为块级元素,display属性可以改变其框类型,其值可以对框进行设置,默 ...

  5. CENTOS7常用的基础命令集合(一)

    目录(?)[-] CentOS7 常用命令集合 常用命令 文件与目录操作 查看文件内容 文本内容处理 查询操作 压缩解压 yum安装器 网络相关 系统相关 系统服务启动相关 防火墙相关 RPM包管理 ...

  6. QQ的发展演变

    在其发展史上,以色列人功不可没.正是四位以色列籍的年轻人,在1996年7月成立的Mirabilis公司,并于同年11月推出了全世界第一个即时通讯软件ICQ,取意为“我在找你”——“I Seek You ...

  7. Javascript高级编程学习笔记(67)—— 事件(11)HTML5事件

    DOM规范没有涵盖所有浏览器支持的所有事件 而许多浏览器出于满足用户需求,或解决特殊问题的目的,实现了一些自定义事件 HTML5列出了浏览器应该支持的所有事件,这里只讨论得到浏览器完善支持的事件(并非 ...

  8. BP算法基本原理推导----《机器学习》笔记

    前言 多层网络的训练需要一种强大的学习算法,其中BP(errorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法. 今天就来探讨下BP算法的原理以及公式推导吧. 神 ...

  9. 微信小程序web-view实例

    微信小程序web-view实例 index.js //index.js //获取应用实例 const app = getApp() Page({ /** * 页面的初始数据 */ data: { }, ...

  10. 机器学习入门03 - 降低损失 (Reducing Loss)

    原文链接:https://developers.google.com/machine-learning/crash-course/reducing-loss/ 为了训练模型,需要一种可降低模型损失的好 ...