思路如下:

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

  

print("*")

(2)打印一行6个星号

  

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

(3)打印6列星号

  

for i in range(6):
print("*")

(4)打印6行6列

  

for i in range(6):
for j in range(6):
print("*",end=" ")
  # 每打印一行就换行
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 则不成立,跳出内存循环。以此类推。

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

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

  

for i in range(6):
for j in range(i):
print("*",end=" ")
print()

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

  打印6个空格,后跟星号

    

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

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

    

for i in range(6):
for k in range(5):
print(" ", end=" ")
print("*")

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

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

        

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

    

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

    

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

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

  

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

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

  

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

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

  

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

    

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

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

   

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

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

  

for i in range(6):
for k in range(5-i):
print(" ",end=" ")
for j in range(2*i+1):
print("*", end=" ")
print()
for i in range(5):
for k in range(i+1):
print(" ", end=" ")
for m in range((9-3*i)+i):
print("*",end=" ")
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. 【转载】selenium与自动化测试成神之路

    Python selenium —— selenium与自动化测试成神之路 置顶 2016年09月17日 00:33:04 阅读数:43886 Python selenium —— selenium与 ...

  2. 20165215 2017-2018-2 《Java程序设计》第4周学习总结

    20165215 2017-2018-2 <Java程序设计>第4周学习总结 教材学习内容总结 chapter5 子类与父类 子类的定义使用关键字extends 任何类都是Object类的 ...

  3. Linux服务器配置---安装nfs

    安装nfs NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. 由于NFS支持的功能很多,不同功能会使用不同程序 ...

  4. Vue2.0,Express实现的简单跨域

    https://www.cnblogs.com/kevin-zjy-blog/p/7357220.html 1. 通过jsonp跨域2. document.domain + iframe跨域3. lo ...

  5. Pony 编程语言介绍

    Pony,一种“Rust 遇上 Erlang”的语言,让开发快捷.安全.高效.高并发的程序更简单. 在 Wallaroo Labs,我是工程副总裁,我们正在构建一个用 Pony 编程语言编写的 高性能 ...

  6. P1216 数字金字塔

    P1216  数字金字塔 我们可以用 f [ i ] [ j ] 表示从(1,1)出发,到达(i,j)的最大权值和. (i , j)可以由(i - 1 , j)或者(i - 1 , j - 1)转化来 ...

  7. ASCII字符代码表

  8. AJAX(表单验证)/JSON之一

    ## 什么是Ajax AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). 1. 异步通信:浏览器利用独立的线程与服务器进行通信, ...

  9. 在idea中不出现大波浪的设置

    在idea中如果有重复代码时候,就会出现大波浪 ,然后,现在可以设置  Duplicated Code 的对号去掉就可以没有大波浪

  10. Failed to load ApplicationContext

    java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.conte ...