2012-10-10 2 views
0

아래의 숫자가 주어지면 더 큰 숫자 내에서 주어진 연속 길이의 최대 값을 찾은 프로그램을 작성해야합니다. 나는 코드의 프레임 워크를 가지고 있지만 세 줄의 "#"줄 앞에 문자열에 's'을 호출 할 수 없다는 오류가 계속 발생한다. 나는 왜 그런지 이해하지만 나는 확실히 모른다. 또한, 수학적으로 더 나은 방법이 없다면 어떻게 될까요? 도와 줘서 고마워!Python 문자열 항목이 호출 가능하지 않음/수학

s=""\ 
    "73167176531330624919225119674426574742355349194934"\ 
    "96983520312774506326239578318016984801869478851843"\ 
    "858615670789112949495459501737958331952853208805511"\ 
    "12540698747158523863050715693290963295227443043557"\ 
    "66896648950445244523161731856403098711121722383113"\ 
    "62229893423380308135336276614282806444486645238749"\ 
    "30358907296290491560440772390713810515859307960866"\ 
    "70172427121883998797908792274921901699720888093776"\ 
    "65727333001053367881220235421809751254540594752243"\ 
    "52584907711670556013604839586446706324415722155397"\ 
    "53697817977846174064955149290862569321978468622482"\ 
    "83972241375657056057490261407972968652414535100474"\ 
    "82166370484403199890008895243450658541227588666881"\ 
    "16427171479924442928230863465674813919123162824586"\ 
    "17866458359124566529476545682848912883142607690042"\ 
    "24219022671055626321111109370544217506941658960408"\ 
    "07198403850962455444362981230987879927244284909188"\ 
    "84580156166097919133875499200524063689912560717606"\ 
    "05886116467109405077541002256983155200055935729725"\ 
    "71636269561882670428252483600823257530420752963450" 


    def findMaxProduct(n): 
     """ 
     >>> findMaxProduct(1) 
     9 
     >>> findMaxProduct(2) 
     81 
     >>> findMaxProduct(22) 
     3556892570112000 
     >>> findMaxProduct(60) 
     130883609235662685781298144870400000000 
     >>> findMaxProduct(70) 
     2412446685431734624320887406251212800000000 
     >>> findMaxProduct(80) 
     2412446685431734624320887406251212800000000 
     """ 
     largest = 0 
     for digit in range(len(s)-n): 
        product = 1 
      for k in range (n): 
      ###product = product * int(s(digit + k)) 
       if product > largest: 
        largest = product 
     return largest 
+1

이 파이썬은 무엇입니까? 그렇다면 명확히하고 태그를 지정하십시오. – Kache

+0

다음과 같이 모든 역 슬래시를 피하기 위해 문자열 리터럴 결합을 활용하고's "("123 "[return]"456 "[return]"789 ")'를 쓰면's'가"123456789 ". 또는's = "" "123 [return] 456 [return] 789" ""'그리고's = ''.join (s.split())'또는 무엇인가 쓸 수 있습니다. 이렇게하면 공백이나 따옴표를 사용하는 것을 피할 수 있으므로 복사 및 붙여 넣기가 쉬워집니다. – DSM

답변

2

당신은 s라는 이름의 함수를 호출하려고 시도 s(...) 있습니다. 당신이 원하는 것은 s[...]입니다.이 문자열은 문자열에 색인을 붙이고 그것의 부분 집합을 반환합니다.