gpt4 book ai didi

python - 我的 Python Pascal 三角形(使用二项式系数)代码每行返回 2 项。我该如何解决?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:06 24 4
gpt4 key购买 nike

这是我的代码:

import math
def binomial(n,k):
if k == n:
print(1)
elif k == 1:
print(n)
elif k > n:
print(0)
else:
a=math.factorial(n)
b=math.factorial(k)
c=math.factorial(n-k)
BIN = int(a/(b*c))
print(BIN, end=' ')
#print ("Binomial of (n,k) is : ",BIN)
return

def pascal(n):
list=[n]
for n in range(1,n+1):
#print (list)
list.append([])
list[n].append(1)
for k in range(0,n+1):
list[n].append(binomial(n,k))
#newlist.append(list[-1])
return

pascal(20)

'''for x in range (1,n+1):
for y in range (0,x+1):
print (binomial(x,y),)
#print (' ')'''

x=int(input("enter n: "))
y=int(input("enter k: "))

binomial(n=x,k=y)

返回的术语在技术上是正确的,但它们不是形成三角形,而是每行打印两个术语。我想知道如何适本地修复形状。

最佳答案

构建帕斯卡三角形的良好表示并非完全微不足道:您不仅需要获得正确的计算,而且对齐和分页也有点棘手。

这是一个简单的尝试,也许会让您满意:

    import math

def binomial(n, k):
if k == n:
return '1'
elif k == 1:
return str(n)
elif k > n:
return '0'
else:
a = math.factorial(n)
b = math.factorial(k)
c = math.factorial(n-k)
return a // (b * c)

def pascal(n):
triangle = {}
for n in range(n+1):
triangle[n] = ['1']
for k in range(1, n+1):
triangle[n].append(str(binomial(n, k)))
return triangle

def find_max_width(triangle):
size = 0
k = None
for key, val in triangle.items():
if len(val) > size:
k = key
return sum([len(val) for val in triangle[k]]) + len(triangle[k])

def print_triangle(triangle):
max_width = find_max_width(triangle)
for key in range(len(triangle)-1):
line = ' '.join(triangle[key])
k = ' ' + str(key) if len(str(key)) == 1 else str(key)
print(k + ' ' * ((max_width - len(line)) // 2) + line)


print_triangle(pascal(20))

结果如下所示:

 0                                                      1
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
5 1 5 10 10 5 1
6 1 6 15 20 15 6 1
7 1 7 21 35 35 21 7 1
8 1 8 28 56 70 56 28 8 1
9 1 9 36 84 126 126 84 36 9 1
10 1 10 45 120 210 252 210 120 45 10 1
11 1 11 55 165 330 462 462 330 165 55 11 1
12 1 12 66 220 495 792 924 792 495 220 66 12 1
13 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
14 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
15 1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1
16 1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1
17 1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1
18 1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1
19 1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1

关于python - 我的 Python Pascal 三角形(使用二项式系数)代码每行返回 2 项。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com