Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 帕斯卡';s三角码_Python - Fatal编程技术网

Python 帕斯卡';s三角码

Python 帕斯卡';s三角码,python,Python,我很难让这个python代码正常工作。这是一个用二进制显示帕斯卡三角形的代码。我不知道怎么了。代码如下所示 from math import factorial def binomial (n,k): if k==0: return 1 else: return int((factorial(n)//factorial(k))*factorial(n-k)) def pascals_triangle(rows): rows=20

我很难让这个python代码正常工作。这是一个用二进制显示帕斯卡三角形的代码。我不知道怎么了。代码如下所示

from math import factorial
def binomial (n,k):
    if k==0:
        return 1
    else:
        return int((factorial(n)//factorial(k))*factorial(n-k))

def pascals_triangle(rows):
    rows=20
    for n in range (0,rows):
        for k in range (0,n+1):
            print(binomial(n,k))
    print '\n'
这就是它一直在打印的内容

1                                                                                                            
1                                                                                                         1                                                                                                            
1                                                                                                            
2                                                                                                            
1                                                                                                            
1                                                                                                            
12                                                                                                           
3                                                                                                            
1                                                                                                            
1                                                                                                            
144                                                                                                          
24                                                                                                           
4                                                                                                            
1                                                                                                            
1                                                                                                            
2880                                                                                                         
360                                                                                                          
40                                                                                                           
5                                                                                                            
1                                                                                                            
1                                                                                                            
86400                                                                                                        
8640                                                                                                         
720                                                                                                          
60                                                                                                           
6                                                                                                            
1                                                                                                            
1                                                                                                            
3628800                                                                                                      
302400                                                                                                       
20160                                                                                                        
1260              

不断地。欢迎任何帮助

有很多错误的事情。 第一种是计算值的方式:如果构建pascal三角形,则希望使用前一行计算当前的值,而不是使用二项式计算(由于乘法的数量太多,计算成本太高)

然后默认情况下,
print
会附加一个“\n”

正确实施:

def print_line(x):
    print (" ".join(map(str,x)))

def pascals_triangle(rows):
    cur_line=[1,1]
    for x in range (2,rows):
        new_line=[1]
        for n in range (0,len(cur_line)-1):
            new_line.append(cur_line[n]+cur_line[n+1])
        new_line.append(1)
        print_line (new_line)
        cur_line=new_line
这将提供以下输出

$ python pascal.py
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

有很多错误的事情。 第一种是计算值的方式:如果构建pascal三角形,则希望使用前一行计算当前的值,而不是使用二项式计算(由于乘法的数量太多,计算成本太高)

然后默认情况下,
print
会附加一个“\n”

正确实施:

def print_line(x):
    print (" ".join(map(str,x)))

def pascals_triangle(rows):
    cur_line=[1,1]
    for x in range (2,rows):
        new_line=[1]
        for n in range (0,len(cur_line)-1):
            new_line.append(cur_line[n]+cur_line[n+1])
        new_line.append(1)
        print_line (new_line)
        cur_line=new_line
这将提供以下输出

$ python pascal.py
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

您的二项式函数中有一个小括号错误,它给您的输出不正确:

from math import factorial

def binomial(n, k):
    if k==0:
        return 1
    else:
        return int((factorial(n)/(factorial(k)*factorial(n-k))))

def pascals_triangle(rows, max_width):
    for n in range (0,rows):
        indent = (rows - n - 1) * max_width
        print(' ' * indent, end='')
        for k in range(0, n+1):
            print("{:^{w}}".format(binomial(n, k), w = max_width*2), end='')
        print()

pascals_triangle(7, 2)
通过添加padding参数,可以使输出如下所示:

             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

您的二项式函数中有一个小括号错误,它给您的输出不正确:

from math import factorial

def binomial(n, k):
    if k==0:
        return 1
    else:
        return int((factorial(n)/(factorial(k)*factorial(n-k))))

def pascals_triangle(rows, max_width):
    for n in range (0,rows):
        indent = (rows - n - 1) * max_width
        print(' ' * indent, end='')
        for k in range(0, n+1):
            print("{:^{w}}".format(binomial(n, k), w = max_width*2), end='')
        print()

pascals_triangle(7, 2)
通过添加padding参数,可以使输出如下所示:

             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

类似这样:
print(二项式(n,k),end=“”)
首先:预期的结果是什么?请编辑您的问题以反映所需的输出。虽然帕斯卡的三角形在纸上看起来很简单,但有很多方法可以在控制台上打印出来。比如:
print(二项式(n,k),end=“”)
首先:预期的结果是什么?请编辑您的问题以反映所需的输出。虽然Pascal的三角形在纸上看起来很简单,但有很多方法可以在控制台上打印出来。