2016-09-13 2 views
1

다음은 행 번호를 입력으로 사용하여 "pascalrow.txt"이라는 파일에 n 행까지 파스칼의 삼각형을 작성하는 코드의 스냅 샷입니다. 해당 행이 있으면 해당 행을 다시 엽니 다. 파일에서 행 번호를 찾고 전체 행을 표시합니다.파이썬에서 파스칼 삼각형의 특정 행을 찾는 방법은 무엇입니까?

일종의 일이지만 ... 이 9 행 이상으로 이동하면 없음으로 반환됩니다.

예 : I tried this 예상대로 완벽하게 작동합니다. 그런데 I tried doing this와 나는 환각 상태에 빠졌다. 두 번째 그림에서 행 번호 9 이상의 아무 것도 볼 수 있습니다. 입력으로 입력하면 아무 것도 반환하지 않습니다. Btw, 나는 파일을 사용했다. 왜냐하면 나는 실제 게으른 느낌으로 행을 반환하는 방법에 대해 많이 생각하고 싶지 않았기 때문이다. 어쨌든 아무도 내가 그 일이 일어나는 이유와 가능한 해결책에 대해 이해하도록 도와 줄 수 있습니까? : 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) 
+0

당신은 5 행에 들여 쓰기를 해결 할 수 있습니다 먼저. – Peaceful

답변

1

코드가 전혀 작동하지 않는다는 사실은 놀랍습니다.

문자열 목록을 파일의 한 줄에 쓴 다음 파일을 읽고 문자를 기준으로 줄을 봅니다. 그러므로, 기적에 의해 8 행을 찾으십시오. 왜냐하면 처음 8 개가 '[1, 8, 28 ...]'의 문자이기 때 문입니다. 물론 행과 같이 실패합니다. 6, 9 위에 아무것도

그래서, 모든 파일 말도 덤프, 쓰기 ('10'모든 문자와 일치하지 않기 때문에.) :

a = pascal(n) 
+0

하하는 내 어리석은 실수를 지적 해 주셔서 감사합니다. P와 내 문제를 해결해 주셔서 감사합니다. D –

관련 문제