思路如下:

(1)先打印一个星号并换行

  

  1. print("*")

(2)打印一行6个星号

  

  1. for i in range(6):
  2. print("*", end=" ")

(3)打印6列星号

  

  1. for i in range(6):
  2. print("*")

(4)打印6行6列

  

  1. for i in range(6):
  2. for j in range(6):
  3. print("*",end=" ")
      # 每打印一行就换行
  4. print()

(5)金字塔型是由下面图形转成的,先打印此图形

  

  控制内层循环的打印。观察上图,发现如下规律:

    

  则让内层循环 j<=i,就可以实现。i 控制行数,j 控制列数。比如:当 i=0 时,内层循环1次,j=0,j<=i,当 j++ 时,就跳出内层循环;当 i=1 时,内存循环2次,j=0 和 j=1 的情况,当 j=1,j++,则 j=2,j<=i 则不成立,跳出内存循环。以此类推。

  1. for i in range(6):
  2. for j in range(i+1):
  3. print("*",end=" ")
  4. print()

(6)当 j<i,那么每行少一个星号,则第一行会被抹掉,如下图所示:

  

  1. for i in range(6):
  2. for j in range(i):
  3. print("*",end=" ")
  4. print()

(7)空格和星号相结合的情况,完整金字塔就是被空格顶过去的。

  打印6个空格,后跟星号

    

  1. for i in range(6):
  2. print(" ", end=" ")
  3. print("*")

  每行5个空格,后跟一个星号

    

  1. for i in range(6):
  2. for k in range(5):
  3. print(" ", end=" ")
  4. print("*")

有了以上的基础,下面分析打印完整金字塔型:

(8)根据下图所示,我们已经可以打印出左边的图形,然后通过控制空格,把它转成右边的图形。

        

  观察后发现如下规律,右边图形相对于左边的图形。行数仍然是6行,即 i=6,先不考虑空格的问题,每一行星星的个数,如下所示:

    

  可以得出:j<=(2*i)。当i=0时,j=0,打印一个星号,必须j<=,参考上面的讲解;当i=1时,j=2,因为是j<=i,j取值0,1,2,循环三次,打印3个星号。以此类推。

    

  1. for i in range(6):
  2. for j in range(2*i+1):
  3. print("*",end=" ")
  4. print()

(9)在(8)的基础上,插入空格。对比发现,如下规律:

  

  再加一层内循环,在星号内循环的前面,先打印空格,然后再打印相应的星号。

  可以得出:k<6-i-1;当 i=0 时,k<5,k取值0,1,2,3,4,循环5次,打印5个空格。依次类推。

  

  1. for i in range(6):
  2. for k in range(5-i):
  3. print(" ",end=" ")
  4. for j in range(2*i+1):
  5. print("*", end=" ")
  6. print()

(10)菱形的上半部分已经打印出,下面考虑如何打印下半部分,最上面的11个星号,已经在上半部分给出,只考虑打印11个星号以下的图形。如图:

  

  观察发现,下半部分共5行,即 i=5 。有如下的规律,如下图所示:

    

  空格内存循环,k<i+1,星号内层循环,m<(9-3*i)+i。

  (9-3*i)+i,是如何得出?通过数学归纳法,发现:

   

  1. for i in range(5):
  2. for k in range(i+1):
  3. print(" ", end=" ")
  4. for m in range((9-3*i)+i):
  5. print("*",end=" ")
  6. print()

(11)完整的菱形,通过(10)和(11),我们已经可以打印出完整的菱形。

  

  1. for i in range(6):
  2. for k in range(5-i):
  3. print(" ",end=" ")
  4. for j in range(2*i+1):
  5. print("*", end=" ")
  6. print()
  7. for i in range(5):
  8. for k in range(i+1):
  9. print(" ", end=" ")
  10. for m in range((9-3*i)+i):
  11. print("*",end=" ")
  12. print()

  

Python打印矩形、直角三角形、等腰三角形、菱形的更多相关文章

  1. Python 打印矩形、直角三角形、等腰三角形、菱形

    # 1)打印一个星号 print('*') #2)打印一行6个星号 * * * * * * for i in range(6): print('*',end=' ') #3)打印6列星号 * * * ...

  2. for循环打印等腰三角形、直角三角形、菱形

    一.等腰三角形 package s1; import java.util.Scanner; public class C31 { public static void main(String[] ar ...

  3. python打印菱形

    1.分析:首先python,我们分析了菱形的成分.双喜鸟seo输入2时,打印三行菱形:输入3时,打印五行菱形.也就是说,根据输入数字A,打印第2a-1行的菱形.菱形由一个三角形和一个倒三角形组成,两个 ...

  4. Python打印格式化与字符串

    关于Python打印格式化与字符串,比较全面的总结,希望对大家有帮助~ # -*- coding: cp936 -*- ''' 打印格式 ''' print "a" print & ...

  5. python打印表格式数据,留出正确的空格和段落星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

  6. python 打印 emoji

    python 打印 emoji 如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10486506.html 一.Unicode字符集: ...

  7. python打印列表的下标和值的例子:

    python打印列表的下标和值的例子: In [1]: list01=[1,4,5] In [10]: def funct01(ll):   ....:     for index,value in ...

  8. 【Python】Python 打印和输出更多用法。

    Python 打印和输出 简述 在编程实践中,print 的使用频率非常高,特别是程序运行到某个时刻,要检测产生的结果时,必须用 print 来打印输出. 关于 print 函数,前面很多地方已经提及 ...

  9. python 打印 九九表

    用Python 打印九九表. print 每打印一行默认会带有换行, 在print语句后加上,end = 't' 会变成tab. 排版会好点. def main(): for i in range(1 ...

随机推荐

  1. Spark学习之路 (十九)SparkSQL的自定义函数UDF

    在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...

  2. linux文件系统的用户和权限管理

    1. 为什么要有用户的概念? 多用户,多任务业务对系统资源的隔离产生需求 2. linux 用户的分类? 2.1. 管理员 拥有操作所有文件的权限 2.2. 普通用户 2.2.1. 普通登录用户 2. ...

  3. 设计模式之Visitor(访问者)(转)

    Visitor定义 作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作. 在Java中,Visitor模式实际上是分离了collection结构中的 ...

  4. Axure RP Extension for Chrome修复

    Axure RP Extension for Chrome安装之前一直用 Firefox 浏览器浏览原型文件,一直用不惯,而且用 Firefox 的唯一目的就是看原型.其他都是用 Chrome 浏览器 ...

  5. Map集合——双列集合

    双列集合<k, v> Map: Map 和 HashMap是无序的: LinkedHashMap是有序的: HashMap & LinkedHashMap: put方法: 其中,可 ...

  6. C# 调整控件的Z顺序

    当窗口或者容器控件中的控件在布局过程中发生重叠的时候,会出现层次性.Z顺序较大的控件会遮挡Z顺序较小的控件,放在顶层的控件会挡住放在底层的控件. 1.编辑一个这样的窗口(使用Label控件) 2.添加 ...

  7. activemq消息队列的使用及应用docker部署常见问题及注意事项

    activemq消息队列的使用及应用docker部署常见问题及注意事项 docker用https://hub.docker.com/r/rmohr/activemq/配置在/data/docker/a ...

  8. 多选插件multiselect.js

    官方网址:http://loudev.com/ html: <html> <head> <link href="path/to/multiselect.css& ...

  9. AtCoder Beginner Contest 086 (ABCD)

    A - Product 题目链接:https://abc086.contest.atcoder.jp/tasks/abc086_a Time limit : 2sec / Memory limit : ...

  10. 基于spring框架的jt项目分页查询知识点(二)

    知识点汇总 1. 日志记录方法 private Logger log= Logger.getLogger(SysLogServiceImpl.class.getName()); 记录SysLogSer ...