杨辉三角如图
用Python写出杨辉三角的代码,二维列表存储,可以再转为一维列表存储。根据输入的行数生成对应行的图数据。我的做法比较耗时,在一些比赛中会超时,亲测。
Talk is cheap,Show me the code.
a=[[1],[1,1],]
n=eval(input())
for i in range(2,n):
for j in range(i+1):
if j==0:
a.append([None]*(i+1))
a[i][j] = 1
continue
if i==j:
a[i][j]=1
break
a[i][j]=a[i-1][j-1]+a[i-1][j]
print(a)
s=''
for i in a:
s+=','.join([str(j) for j in i])
s+=','
print(s.split(','))
s=''
for i in a:
s+=','.join([str(j) for j in i])
s += ','
print(s)
s=s.split(',')
del s[-1] # 末尾有一个空字符,删除,不然下面转化会出问题
print([int(i) for i in s])
i,j 分别代表行列,j为0时表示新一行的开始,i和j相等时表示到了行尾。其余就可以用上一行的头顶上的两个数做加法得到。
可以用字符串的方法变为一维列表,join为什么非得str()转换呢?因为,它不能连接数字int型,所以就先转为字符,如果需要int型,再转一步即可。
这是没有转为str时的报错信息:TypeError: sequence item 0: expected str instance, int found
结果: