文章目录
前言
这是本人第一次写博客,一次大胆的尝试,希望通过这种方式督促自己,让自己热爱编程,通过写博客的方式复习知识。自己平时参加的电赛,总是会在博客上阅读到各种大佬的文章,受益匪浅,希望可以通过自己的努力帮助更多的像我一样的小白初学者。
第一次博客的内容我选择了自己在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哈哈~),非常不错的体验希望自己以后可以继续坚持。