我已经创建了Pascal的Triangle但是它在一行上打印。有任何建议如何让它按行打印(不是三角形)?
row=input("Please enter height: ")
triangle=[]
for rownum in range (0,row+1):
newvalue=1
newrow=[]
if row==0:
newrow.append(int(newvalue))
elif row==1:
newrow.append(int(newvalue,newvalue))
else:
for column in range(rownum):
if column==0:
newrow.append(1)
elif column==(rownum-1):
newrow.append(int(newvalue))
else:
new_value=triangle[rownum-1][column]+triangle[rownum-1][column-1]
newrow.append(int(new_value))
triangle.append(newrow)
print triangle
答案 0 :(得分:5)
>>> print '\n'.join(' '.join(str(n) for n in row) for row in triangle)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
或者,使用str.center
更好地对齐事物:
>>> print '\n'.join(' '.join(str(n) for n in row).center(80) for row in triangle)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
要为更大的比例正确保留几何体,可以使用str.format
这样的技巧:
>>> print '\n'.join(' '.join('{:3d}'.format(n) for n in row).center(80) for row in triangle)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
答案 1 :(得分:3)
将最后一行更改为:
for line in triangle:
print str(line)
给出了这个:
[]
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
将最后一行更改为:
i = row
for line in triangle:
print ' ' * i + str(line)
i -= 1
给出了这个:
[]
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
最后,将其更改为:
i = row
for line in triangle:
str_line = [str(e) for e in line]
print (' ' * i) + ' '.join(str_line)
i -= 1
给出了这个:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
希望这有帮助。
答案 2 :(得分:0)
我为你感到难过。这是你删除的问题的答案.....
例如,任何字符串值都有一个名为center的方法,该方法使用old生成一个新字符串 以值为中心,使用额外的空格将值填充到给定长度。一般形式是:
s.center(n)
此方法采用一个参数n,即结果的大小。例子:
>>> k = "Ni"
>>> k.center(5)
' Ni '
>>> "<*>".center(12)
' <*> '
请注意,在第一个示例中,我们要求Python将字符串“Ni”置于长度为5的字段中。 显然,我们不能将5个字符的2个字符的字符串居中,因此Python随意添加了额外的空间 旧价值之前的字符。
另一个有用的字符串方法左对齐给定长度的字段中的值。一般形式:
s.ljust(n)
对于任何字符串表达式s,此方法返回一个包含s中字符的新字符串 在它之后添加了足够的空格来创建一个长度为n的新字符串。
>>> "Ni".ljust(4)
'Ni '
>>> "Too long to fit".ljust(4)
'Too long to fit'
请注意,.ljust()方法永远不会返回更短的字符串。如果长度不够,它就会返回 原始值。
有一种类似的方法可以对字符串值进行右对齐:
s.rjust(n)
此方法返回一个字符串,在该值之前添加了足够的空格以生成长度为n的字符串。 与.ljust()方法一样,它永远不会返回比原始字符串短的字符串。
>>> "Ni".rjust(4)
' Ni'
>>> m = "floccinaucinihilipilification"
>>> m.rjust(4)
'floccinaucinihilipilification'
有时您想要从字符串中删除空格(空格,制表符和换行符)。对于字符串s, 使用这些方法删除前导和尾随空格:
•s.strip()返回s,删除了任何前导或尾随空白字符。 •s.lstrip()仅删除前导空格。 •s.rstrip()仅删除尾随空格。
>>> spaceCase = ' \n \t Moon \t\t '
>>> spaceCase
' \n \t Moon \t\t '
>>> spaceCase.strip()
'Moon'
>>> spaceCase.lstrip()
'Moon \t\t '
>>> spaceCase.rstrip()
' \n \t Moon'