• 例子:循环语句--打印一个菱形


     打印一个如上图所示的菱形。遇到这样的题目,我们该如何去思考呢?首先这是一个对称的图形,其次,我们不能只看到 * 这个符号,而应该每行都当成空格+ *的这种组合。那么一步一步的发掘该图形的规律。

     这里重点是看*个数和前空格这两列的规律,行号可以自由的由range()函数来控制,7-*个数=2*前空格,这个公式便是该例子的核心算法。找到对称的中心点。

     1 # coding=gbk
     2 # 此处不考虑*的间距问题,一个*即为边长1
     3 line = int(input("请输入该菱形的边长:"))
     4 a = 2 * line - 1
     5 # a即为菱形中间的对角线长度
     6 for i in range(-a//2,a//2+1):
     7 # 该range()函数的取值范围是根据行号来裁定的,中间行号定为0
     8     if i < 0:
     9         print(' '*(-i) + '*'*(2 * i + a))
    10     else:
    11         print(' '*i + '*'*(a - 2 * i))
    12 #################################################
    13 D:untitledproject2venvScriptspython.exe D:/untitled/project2/day1/lingxing.py
    14 请输入该菱形的边长:6
    15       
    16      *
    17     ***
    18    *****
    19   *******
    20  *********
    21 ***********
    22  *********
    23   *******
    24    *****
    25     ***
    26      *
    27 
    28 Process finished with exit code 0

    上图中个代码是分为上下两部分打印的,其实这里可以用一个公式来输出上下两部分的结果,因为i取值有正负之分,所以才有了if…else…,我们可以新起一个变量l,让l一直保持为正数。即8~11行代码可以写成如下所示:

    1     if i < 0:
    2         l = -i
    3     else:
    4         l = i
    5     print(' '*l + '*'*(a - 2 * l))

    其实这里可以使用python中的绝对值函数abs(),abs(x),x可以是整数、浮点数和复数。函数返回x(数字)的绝对值,如果参数是一个复数,则返回它的大小。

     1 # coding=gbk
     2 # 此处不考虑*的间距问题,一个*即为边长1
     3 line = int(input("请输入该菱形的边长:"))
     4 a = 2 * line - 1
     5 # a即为菱形中间的对角线长度
     6 for i in range(-a//2,a//2+1):
     7 # 该range()函数的取值范围是根据行号来裁定的,中间行号定为0
     8     print(' '*abs(i) + '*'*(a - 2*abs(i)))
     9 ############################################
    10 D:untitledproject2venvScriptspython.exe D:/untitled/project2/day1/lingxing.py
    11 请输入该菱形的边长:5
    12      
    13     *
    14    ***
    15   *****
    16  *******
    17 *********
    18  *******
    19   *****
    20    ***
    21     *
    22 
    23 Process finished with exit code 0
  • 相关阅读:
    用C#如何创建、读取cookie
    根据拼音首字母搜索
    物理路径和相对路径 斜杠和反斜杠
    FileUpLoad导入文件类型
    JS获取FckEditor的值
    DateTime 的24小时和12小时制
    JS中Date对象getYear()方法和getFullYear()方法区别
    SQL Server 索引结构及其使用(二)
    带你学习JQuery:事件冒泡和阻止默认行为
    DropDownList 发现
  • 原文地址:https://www.cnblogs.com/linfengs/p/11635267.html
Copyright © 2020-2023  润新知