思路如下:

(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. Web API 跨域请求

    分布式技术在项目中会频繁用到,以前接触过WebService(可跨平台).WCF(功能强大,配置繁琐),    最近由于上层业务调整,将原来的MVC项目一分为三,将数据层提取出来,用API去访问.然后 ...

  2. 【javascript】内存泄露及其解决办法

    1.内存泄露:一般由于开发者使用不当导致不用的内存没有被操作系统或者空闲内存池回收释放. 2.造成内存泄露的常见原因: 1) 意外的全局变量引起的内存泄露 2)闭包引起的内存泄露 闭包可以维持函数内局 ...

  3. AtCoder Beginner Contest 084(AB)

    A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit  ...

  4. IPERF 网络性能测试

    Iperf 是一个网络性能测试工具.Iperf可以测试最大TCP和UDP带宽性能.Iperf具有多种参数和UDP特性,可以根据需要调整.Iperf可以报告带宽,延迟抖动和数据包丢失. Iperf 参数 ...

  5. 大神教你Nginx常用基础配置方案

    Nginx的fastcgi模块参数设置 Nginx 有两个配置文件fastcgi_params.fastcgi.conf,两者唯一的区别是,fastcgi.conf 多一个参数 SCRIPT_FILE ...

  6. 八大排序算法之七—堆排序(Heap Sort)

    堆排序是一种树形选择排序,是对直接选择排序的有效改进. 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆.由堆的定义可以看出,堆顶元素(即第一个元素) ...

  7. thinkphp 整合微信支付-简单粗暴

    <?php//判断是否是微信客户端--该代码只适用于手机微信端--使用方法请看最后面注释if (isset($_SERVER['HTTP_USER_AGENT']) && str ...

  8. PHP5.4以下的json_encode中文被转码的问题

    PHP的json_encode中文被转码的问题   在php5.2中做json_encode的时候.中文会被unicode编码, php5.3加入了options参数, 5.4以后才加入JSON_UN ...

  9. python面向对象三大特性之一继承、多态、封装

    继承,即在定义一个类时,以另一个类为参数,则称这个新定义的类继承了参数类,父类又称为基类. 单继承表示只继承一个类,多继承表示继承多个类. class parent1: pass class pare ...

  10. 超详细 Nginx 极简教程,傻瓜一看也会!

    什么是Nginx? Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse Proxy ...