新手求教:请问怎样用python 显示杨辉三角,任意输入一个数N,输出一个N+1层的杨辉三角。
答案:1 悬赏:40 手机版
解决时间 2021-04-05 00:22
- 提问者网友:精神病院里
- 2021-04-04 19:30
新手求教:请问怎样用python 显示杨辉三角,任意输入一个数N,输出一个N+1层的杨辉三角。
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-04-04 19:47
我来试一下:
#!/usr/bin/python
# coding:utf-8
n = -1
while n < 0:
n = raw_input("Enter a nonnegative integer >= 0:")
try:
n = int(n)
except:
print "please enter integer!"
n = -1
tmppascal = [0,]* (2 * n + 3)
pascal = []
for i in range(n + 2):
pascal += [tmppascal[:],]
center = n + 1
pascal[1][center] = 1
x = y = 0
for i in range(2, n + 2):
if n % 2 == 1:
if i % 2 == 0:
x = 1
y = 2 * n + 2
else:
x = 2
y = 2 * n + 1
else:
if i % 2 == 1:
x = 1
y = 2 * n + 2
else:
x = 2
y = 2 * n + 1
for j in range(x, y, 2):
pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j + 1]
if n % 2 == 0:
max = pascal[n + 1][center]
else:
max = pascal[n + 1][center - 1]
maxlen = len(str(max))
for row in pascal[1:]:
for col in row[1:-1]:
if col == 0:
col = ""
fm = '{0: ^' + str(maxlen) + '}'
print fm.format(col),
print追问这个输出结果格式不对啊?全在一条直线上,不是三角啊追答最后一行的print别删除了。
你的python版本是哪个?追问没有删除啊,是3.3的,给print都加了括号了,输出结果还是
格式要求要和问题中一样,每个数之间空格是最大数的位数,3位数就空三格,两位数就空两格。大神,请问能解决吗?
追答倒数第二行,改为:
print(fm.format(col), end='')
#!/usr/bin/python
# coding:utf-8
n = -1
while n < 0:
n = raw_input("Enter a nonnegative integer >= 0:")
try:
n = int(n)
except:
print "please enter integer!"
n = -1
tmppascal = [0,]* (2 * n + 3)
pascal = []
for i in range(n + 2):
pascal += [tmppascal[:],]
center = n + 1
pascal[1][center] = 1
x = y = 0
for i in range(2, n + 2):
if n % 2 == 1:
if i % 2 == 0:
x = 1
y = 2 * n + 2
else:
x = 2
y = 2 * n + 1
else:
if i % 2 == 1:
x = 1
y = 2 * n + 2
else:
x = 2
y = 2 * n + 1
for j in range(x, y, 2):
pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j + 1]
if n % 2 == 0:
max = pascal[n + 1][center]
else:
max = pascal[n + 1][center - 1]
maxlen = len(str(max))
for row in pascal[1:]:
for col in row[1:-1]:
if col == 0:
col = ""
fm = '{0: ^' + str(maxlen) + '}'
print fm.format(col),
print追问这个输出结果格式不对啊?全在一条直线上,不是三角啊追答最后一行的print别删除了。
你的python版本是哪个?追问没有删除啊,是3.3的,给print都加了括号了,输出结果还是
格式要求要和问题中一样,每个数之间空格是最大数的位数,3位数就空三格,两位数就空两格。大神,请问能解决吗?
追答倒数第二行,改为:
print(fm.format(col), end='')
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯