Python零基础也能实现数字金字塔?

文章目录

  • 目录

    前言

    一、题目分析思路

    二、零基础补充知识

    1.print()函数

    2.for循环语句

    三、代码实现

    总结


  • 前言

      这是本人第一次写博客,一次大胆的尝试,希望通过这种方式督促自己,让自己热爱编程,通过写博客的方式复习知识。自己平时参加的电赛,总是会在博客上阅读到各种大佬的文章,受益匪浅,希望可以通过自己的努力帮助更多的像我一样的小白初学者。

       第一次博客的内容我选择了自己在Python的上机课上遇到的一道题目,用Python语言实现数字金字塔。具体要求如下:


    一、题目分析思路

    我们不妨把问题化简一下,表面上是金字塔,实质上就是一个二维数组(相当于是一个表格),只不过没有数字的位置我们用空格代替罢了。例如,题目是一个7*14的二维数组,第一行就是前6列都是空格,然后第7列是数字1,然后第二行也是先打印7-2=5个空格,然后输出数字2 到1,然后再到2,之后换行,紧接着再打印第三行~以此类推。


    二、零基础补充知识

    1.print()函数

    这里知识介绍最简单的用法,如果读者想详细了解这个函数,推荐一位大佬的文章,链接如下:

    print函数详细理解及使用范例https://blog.csdn.net/weixin_69553582/article/details/125403845?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221660BDEF-A854-4583-9CA4-F310ED3D5DB6%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1660BDEF-A854-4583-9CA4-F310ED3D5DB6&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-125403845-null-null.142%5Ev100%5Epc_search_result_base4&utm_term=python%20print%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187#%E3%80%80%E3%80%80%E8%AF%A5%E5%87%BD%E6%95%B0%E7%9A%84%E8%AF%AD%E6%B3%95%E5%A6%82%E4%B8%8B%EF%BC%9A其实你可以这样理解:print()函数可以在控制台打印你所需要的数的值。在括号内可以放置各种参数,字符串,数字,以及文本等(文本需要用双引号引用起来)

    例如:

    print(1314)  # 直接输出整数,可不带双引号或单引号。输出结果:1314
    print(12.22)  # 直接输出浮点数。输出结果:12.22
    print(10 / 3)  # 可以包含算术表达式,输出运算结果为:3.3333333333333335
    print(100 * 3.13 + 60)  # 可以包含算术表达式,输出运算结果为:373
    print(2, 0, 2, 0)  # 使用','连接要输出的数值,中间用空格连接。输出结果:2 0 2 0
    print(192, 168, 1, 1, sep='.')  # 使用'.'连接输出数值,数值间用'.'间隔。输出结果:192.168.1.1
    # 不能直接使用'+'连接字符串和数值,会报错。异常信息为:
    # TypeError: can only concatenate str (not "int") to str
    print("我爱吃大白菜" + 43)  # 错误写法
    # 使用'+'连接字符串和数值时,数值要转换为字符串。输出结果:我爱吃大白菜43
    print("我爱吃大白菜" + str(43))
    # 使用','连接字符串和数值,字符串和数值用空格分隔。输出结果:我爱吃大白菜 43
    print("我爱吃大白菜", 43)
    # 使用操作符'%e'%格式化数值为科学记数法。输出结果:1.205633e+14
    print("%e" % 120563332111098)
    

    2.for循环语句

    这是非常经典的循环语句,下面简单介绍下用法:

    for i in range(10):
        print(i)

    上面代码会从0-9,共循环10次,这个range(10),其实是相当于产生一个从0-9的列表,每循环一次,就会把列表里的下一个元素取出来给临时变量i。

    运行结果如下:

    其中range(a,b,k),k用作步长值,序列的第一个数为a,b是界限值。

    这可能有点难以理解,举个例子就好了。

    例如:

    for i in range(5,1,-1):
        print(i)

    他就表示从5到1(不能包括1,因为1是界限值),依次递增-1,所以不难猜出这两行代码的结果:


    三、代码实现

    print("请输入一个数")
    row=int(input())  #定义有多少行
    for i in range(1,row+1):
        t=i
        for j in range(row-i):
            print(" ",end='')   #首先打印(总行数-当前行数)个空格
        for k in range(i):
            print(t,end=' ')
            t=t-1               #再从当前行数打印到1
        for m in range(i-1):
            m=m+2
            print(m ,end=" ")     #从2打印到当前行数
        print()#实现换行
    

    首先一个大的循环下放了三个小循环,第一个循环实现了当前行的打印空格的工作,第二个循环实现了从当前行数打印到1的工作,第三个循环实现了再从2打印到当前行数的效果。

    运行结果如下:

    咦?总感觉哪里不太对劲,和咱们想要的结果不太一样,细分析一下其实是打印完空格后直接就输出了数字,我们应该让输出玩空格后再以空格作为结尾,这样我们的格式就会统一了。

    修改一下:

    print("请输入一个数")
    row=int(input())  #定义有多少行
    for i in range(1,row+1):
        t=i
        for j in range(row-i):
            print(" ",end=' ')   #首先打印(总行数-当前行数)个空格 #这里修改一下,在end后的''加入了空格
        for k in range(i):
            print(t,end=' ')
            t=t-1               #再从当前行数打印到1
        for m in range(i-1):
            m=m+2
            print(m ,end=" ")     #从2打印到当前行数
        print()#实现换行
    
    

    结果为:

    这样就大功告成了!


    总结

    这一次我们学习了print函数以及for循环,分析金字塔的格式后使用嵌套循环完成了每一行每一列的打印,最后成功实现。

    不知不觉已经两个小时过去了(第一次写博客,写了这么长时间O(∩_∩)O哈哈~),非常不错的体验希望自己以后可以继续坚持。

    作者:一颗大柏菜

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python零基础也能实现数字金字塔?

    发表回复