如何在 python 中找到帕斯卡三角形的特定行?
How to find a particular row of a pascals triangle in python?
这是我的代码的快照,用于将最多 n 行的帕斯卡三角形写入名为“pascalrow.txt”的文件,之后它将行号作为输入,如果找到该行,它会重新打开文件,找到行号并显示整行。
它有点工作但是..一旦我 移动到 9 行以上然后我 return 编辑 None.
例如:我 tried this 并且如预期的那样完美运行。
但后来 I tried doing this 我吓坏了。在第二张图片中,可以看到第 9 行以上的任何内容,我都将其作为输入,它 return 是我 none。顺便说一句,我使用文件是因为我不想考虑如何 return 行,因为我真的很懒惰。无论如何,任何人都可以帮助我理解为什么会发生这种情况以及可能的解决方法吗? :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)
这是我的代码的快照,用于将最多 n 行的帕斯卡三角形写入名为“pascalrow.txt”的文件,之后它将行号作为输入,如果找到该行,它会重新打开文件,找到行号并显示整行。
它有点工作但是..一旦我 移动到 9 行以上然后我 return 编辑 None.
例如:我 tried this 并且如预期的那样完美运行。 但后来 I tried doing this 我吓坏了。在第二张图片中,可以看到第 9 行以上的任何内容,我都将其作为输入,它 return 是我 none。顺便说一句,我使用文件是因为我不想考虑如何 return 行,因为我真的很懒惰。无论如何,任何人都可以帮助我理解为什么会发生这种情况以及可能的解决方法吗? :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)