簡體   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