2016-08-01 39 views
1

我對編程/ Python很新,所以我的代碼可能不是最有效的。這個問題涉及歐拉項目的問題8。它的內容如下:ValueError循環非常大的連續字符串時(項目歐拉概率8)

查找1000位數字中具有最大產品的十三個相鄰位數。這個產品的價值是什麼?

我已經找到了下面的代碼的答案,但代碼給我的問題取決於我如何定義1000位數字,被稱爲a。 當a被寫在一行它工作正常,但是當我用幾行三重引號(通過輸入分隔)執行它,它給了ValueError S IN第二for循環達到的a「行」結束時, 。

有人可以向我解釋爲什麼會發生這種情況,以及如何解決它?提前致謝!

更確切地說,我得到的錯誤是:

ValueError: invalid literal for int() with base 10: '\n' 

見下面的代碼:

a = """7316717653... etc""" 

    product = 1 
    save = 0 
    list1 = [] 
    list2 = [] 

    for ab in range(0, len(a)-13): 
     start = ab 
     stop = ab+13 
     check = a[start:stop] 
     list1.append(check) 

    for a in list1: 
     for b in a: 
      product = product*int(b) 
     list2.append(product) 
     if product > save: 
      save = product 
      print('This is currently the largest product: ', product) 
      product = 1 
     else: 
      product = 1 

    print(max(list2)) 
+0

看來錯誤在於缺少的代碼中,您選擇不添加。請把整個代碼放在一起,以便我們能夠理解你想要做的事情。 – pistache

+0

您生成'list1'的方式會使一些行分隔符('\ n')以'a'結尾,因此以'b'結尾。您可能希望跳過行分隔符的字符,或確保它們不會在'list1'中結束。 – pistache

+0

Hi @pistache。我現在也包含了第一個for for循環代碼。我在下面的答案中嘗試了連接方法,它的作用就像一個魅力。我仍然不確定行分隔符的添加位置。這是循環還是使用'「」「1000位數字」「」''在多行代碼中聲明'a'的方法。我沒有意識到這一點。 現在我意識到這一點,我非常不幸地把1000位數字叫做'a'和我的'for'循環變量'a' ...... – gaatjeniksaan

回答

0

你用換行(行分隔符,寫成「\ n結束了')在list1中,如果您將變量作爲多行文本字符串編寫,這是正常的。

您可以嘗試定義a文本沒有任何換行符,使用標準的Python串聯:

a = ( "123456789" "123456789" "123456789" )

這不會創建一個元組(他們需要一個結尾逗號),a實際上將字符串123456789123456789123456789 ,沒有任何分離的換行符,並且int(b)將停止抱怨。