第一种方法,输出带列表括号的
n=int(input('请输入杨辉三角打印的行数:'))
ls=[] #创建空列表用于存放生成的数列
for i in range(n):
if i==0:
ls.append([1])
elif i==1:
ls.append([1,1])
else:
y=[] #再次创建一个空列表来存放第三行及以上的数据
for j in range(i+1):
if j==0 or j==i:
y.append(1)
else:
y.append(ls[i]+ls[i+1]) #每行头尾之外的赋值
ls.append(y) #将列表添加进ls中
for i in range(n):
s=str(ls[i]) #这里将列表内的元素转换为字符串之后输出可以使用center,不然会报错
print(s.center(n*10))
输出结果,例如输入7,代表输出7行的杨辉三角
第二种,就是不带列表括号的
n=int(input('请输入杨辉三角打印的行数:'))
ls=[]
for i in range(n):
if i==0:
ls.append([1])
elif i==1:
ls.append([1,1])
else:
y=[]
for j in range(i+1):
if j==0 or j==i:
y.append(1)
else:
y.append(ls[i-1][j]+ls[i-1][j-1])
ls.append(y)
for i in ls:
s=' '.join(str(j) for j in i)# 这里空格可以根据个人喜好来
print(s.center(40))# 这个40也能根据个人喜好来,想改啥改啥
输出结果,还是输入7
好啦,可能有大佬看到这里会有个小疑问(ps:我也不知道有没有,瞎猜的(●'◡'●))
为啥输出的时候不弄两个循环输出,这样不就不用写这老长一串了嘛
for i in ls:
s=' '.join(str(j) for j in i) #就是这里
print(s.center(40))
原因嘛……
百思不得其解,曾经尝试过改成这样
for i in ls:
for j in i:#把str(j) for j in i变成一个循环
print(str(j).center(40))#输出
#s=' '.join(str(j) for j in i)
#print(s.center(40))
但是输出结果……哎~头大~~~~~
我也不知道为撒子就变成了这样,呜呜呜~ 心累了已经……
不管啦,总之能输出就好啦!
谢谢各位大佬能够给小的赏个脸,看完这篇文章
奇奇怪怪的题目来源于我的专业课考试,遇到奇奇怪怪的,好玩的题目就会发出来分享给大家
创作不易,创作不易,创作不易!!!!
作者还是个学生,不定期更新(有时间就更)