zoukankan      html  css  js  c++  java
  • 例子:循环语句--打印一个边长为n的正方形。

    1 # coding=gbk
    2 n = int(input("请输入该正方向的边长:"))
    3 print('*'*n)
    4 for i in range(n-2):
    5     print('*',' '*(n-2),'*')
    6 print('*'*n)

    首先看需求,打印一个边长为n的正方形,那么如何显示呢?我们可以用*符号来当做图形显示,横着n个*,竖着n个*,中间填充空格,那么就是我们所需要的结果。(这里不考虑显示行间距的问题)。

    然后我们就开始程序的设计,既然是正方形,那么第一行肯定是n个*,那就print('*'*n),这就是连续输出n个*。正方形还有竖着的两个边,那么怎么考虑呢?从整体上看,竖着是n个*,那么让其开头一个*,结尾一个*,中间都是空格,以该模式来个n-2行是不是就能实现了呢?(n-2是因为首尾两行都是*),因此有了程序中的for循环,print('*',' '*(n-2),'*'),打出是*     *这种格式,如下图所示。

     

     

     

    再来看看另一种实现方式:

     

    试想一下,正方形的直观印象,第一行与最后一行的格式是* * * * *这种,而其余的中间行是*        *这种格式,那么我们是不是可以将这两种不同的格式作为两个整体,然后重复使用呢?如上图代码所示,设定a和b变量都是*,因为每行的第一个符号都得是*,进入for循环得出一行的格式,得出a的格式是* * * * *,得出b的格式是*     ,这里要注意的是b的格式并不完整,因此在得到*     ,之后需要使用else再给b格式后面加上*得到*     *这个预期的格式。

    分别得到a和b这两种格式,我们来组合整个图形的输出,c = a + ' ' + (b + ' ')*(n-1) + a,第一行格式a+换行+(n-1)个b格式+换行+最后一行格式a,可得出需求的图案。在这里,要注意换行符的使用,也可以写成下图所示的格式。

     

     

  • 相关阅读:
    从一个word文件中读取所有的表格和标题(1)
    多线程下QAxObject指针为NULL的解决办法
    event对象,ie8及其以下
    日期插件kalendae,遇到的一些问题
    回车键和button按钮都绑定同一个事件,如何避免按回车的时候button重复点击
    jQuery.Cookie.js用法
    jquery操作radio单选按钮、checked复选框。
    拖拽改变div的大小
    [BZOJ 2242] [SDOI 2011] 计算器
    20181016提高测试
  • 原文地址:https://www.cnblogs.com/linfengs/p/11572828.html
Copyright © 2011-2022 走看看