2017-05-21 1 views
0

저는 프로그래밍으로 4 주 (python)입니다. 심각 해지고 있습니다. 우리가 가 허용되지 있습니다Python에서 기본 파스칼 삼각형 프로그래밍

b = [[1],[1,1],[1,2,1],[1,3,3,1],...] 

우리는 단지 의미 코딩의 기초로 시작됩니다 우리 교수는 파스칼의 삼각형의 표현에 대한 증가 길이의 필드로 기존의 파이썬에서 필드를 프로그래밍 할 우리에게 물었다 기능과 같은 부가 기능을 사용하는 것. 대부분 while 및 for 루프와 if 문과 함께 작업했습니다.

여기에서 시작하려면 도움이 필요합니다. I는 다음과 같이 시작 : 여기

n = int(input("Number of layers=")) 
b = [[1]] 

for layer in range(0,n): 
    for row in range(0,n): 

내가 붙어 오전 지점입니다.

pascale의 삼각형이 표시되는 방식으로 구조가 표시됩니다. 위에서 볼 수 있듯이, b 내부의 필드 길이는 각 추가 레이어마다 1 씩 증가합니다. 외부 요소를 확인할 수있는 아이디어가 있었는데, 항상 값을 "1"로 유지했기 때문입니다. 난 그냥 해결책을 찾을 수없는, 어떻게 그렇게 할 수 있습니다 ..

1 
11 
121 
1331 
14641 
.. 
.. 

을하지만, 난 그냥 어쩌면 누군가가 나를 도울 수 ... 계속하기 위하여 여기에서 출발점을 찾을 수 없습니다 .. 계속하세요 마음에, 나는 이것을 ~과 for-loops 동안 에 보관해야합니다. 그게 다야. 추가 기능이 필요하지 않습니다.

+1

에 오신 것을 환영합니다. 나는 당신이 당신의 임무에 바쁘다고 생각하지만, [투어]를 읽는 것을 잊지 말고, 최선을 다하는 데 도움이되는 귀중한 정보를 제공합니다. – Anthon

답변

1

임 거기에 정말 좋은 솔루션이 있는지 확인하지만 만약 당신이 초급 수준에서 뭔가를 찾고 있습니다이 체크 아웃

n = 5 #depth of the pascal tree 

pascal = [] 

for x in range(n): 

    if x == 0: 
     help_list = [1]   
     pascal.append(help_list) 
     continue 
    if x==1: 
     help_list = [1,1]  
     pascal.append(help_list) 
     continue 

    help_list = [l for l in range(x+1)] #this will just initialize list so you can add to it 
    for y in range(1,x): 
     help_list[0] = 1 
     help_list[x] = 1 
     help_list[y] = pascal[x-1][y] + pascal[x-1][y-1]   

    pascal.append(help_list) 

print(pascal) 
+0

많은 도움이되었습니다! 정말 고맙습니다! – ohlawd

+0

당신은 환영합니다. 원하는 경우이 솔루션에 올바른 태그를 지정할 수 있습니다. – lobito

0

과제이므로 완전한 해결책을 제공하지는 않겠지 만 도움을 드리겠습니다. 두 개의 중첩 된 for 루프를 사용하는 것이 좋습니다. 조금이라도 바꿀 필요는 있지만 그래도 작동합니다. 기억하십시오. 이미 b = [[1]]입니다.

다음으로 새 행의 요소가 이전 행에서 어떻게 생성되는지 생각해보십시오. 이전 요소 중 일부에 대한 간단한 대수 관계가 있습니까? (Wikipedia에 Pascal의 삼각형에 대해 물어볼 수도 있습니다.) 그 요소들을 어떻게 색인합니까? 예를 들어 목록의 append 기능을 살펴볼 수도 있습니다. 이것은 가장 효율적인 솔루션은 아니지만 여기서는 중요하지 않습니다.

0

무엇인가

p = [1,3,3,1] 
l = [0]*(len(p)+1) 
for i in range(len(p)): 
    l[i] += p[i] 
for i in range(len(p)): 
    l[i+1] += p[i] 
print l 

[0]*n 경우 다음 허용되지 않습니다

1 3 3 1 0 
    + 0 1 3 3 1 
    ----------- 
    1 4 6 4 1 

당신은 하나를 통해 이동 한 후 자신에게 이전 행의 요소를 추가하여 다음 행을 계산할 수 있습니다 다음을 통해 0의 목록을 만들 수 있습니다.

l = [] 
for i in range(len(p)+1): 
    l += [0] 
관련 문제