繁体   English   中英

如何在python中找到帕斯卡三角形的特定行?

[英]How to find a particular row of a pascals triangle in python?

这是我的代码的快照,用于将最多 n 行的 pascal 三角形写入名为“ pascalrow.txt ”的文件中,然后将行号作为输入,如果找到该行,则重新打开该文件,找到行号并显示整行。

它有点工作但是......一旦我移动到 9 行以上,我就会返回 None

例如:我试过这个,它工作得很好,正如预期的那样。 但后来我尝试这样做,我吓坏了。 在第二张图中,可以看到第 9 行以上的任何内容,我都作为输入给出,它没有返回给我。 顺便说一句,我使用文件是因为我不想考虑太多如何返回行,因为我真的很懒惰。 无论如何,任何人都可以帮助我理解为什么会发生这种情况以及可能的解决方法吗? :3

def pascal(n):
    if n==0:
        return [1]
    else:
        N = pascal(n-1)
        return [1] + [N[i] + N[i+1] for i in range(n-1)] + [1]


def pascal_triangle(n,fw):
    for i in range(n):
        fw.write(str(pascal(i))+"\n")
    fw.close()

def findRow(fr,row):
    for x in fr:
        for y in x:
            if y==str(row):
                return (x)



n=int(input("Enter the number of rows to print : "))
fw = open('pascalrow.txt', 'w')
fr = open('pascalrow.txt', 'r')
row = int(input("Enter the row to search : "))
pascal_triangle(n, fw)
a = findRow(fr,row)
print("The",row," th row is : ",a)

您的代码完全有效的事实令人惊讶。

您将一个字符串列表写入文件中的一行,然后读取该文件并逐个字符地查看该行。 因此,奇迹般地,您找到了第 8 行,因为您找到的第一个 8 行是 '[1, 8, 28...]' 中的一个字符。当然,它对于行失败,例如 6 和 9 以上的任何内容(因为 ' 10' 将不匹配任何字符。)

所以,转储所有的文件废话,然后写:

a = pascal(n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM