簡體   English   中英

第8行:ValueError:int()以10為底的無效文字:“'

[英]Line 8: ValueError: invalid literal for int() with base 10: ' '

我是一個初學者程序員。 我想編寫一個程序,為我提供輸入數字中所有4位相鄰數字產品的最大乘積。 因此,如果輸入為“ 12345678”,則可能的選擇為1234、2345、3456、4567、5678,最大乘積為5 * 6 * 7 * 8。

我的代碼:

number = str(input("Enter a number:"))
i = 0
L = []
while (i!=len(number)-3):
    a = int(number[i])
    b = int(number[i+1])
    c = int(number[i+2])
    d = int(number[i+3])
    product = a*b*c*d
    L.append(product)
    i = i+1
print(L)
print(number)
print(max(L))

我需要將此數字應用於1000位數字。 我的代碼適用於8位輸入數字,並給出了500位數字的答案。

但是我嘗試用一​​個600位數的數字進行嘗試,並拋出了此錯誤。

我知道ValueError是一個錯誤,當給函數調用的參數具有正確的類型但值不正確時會出現。 還有一些示例,說明用戶何時在代碼Eg中輸入字符串“ Alexander”作為輸入:int(input(“ Enter a number”))

錯誤是由於''無法轉換為整數的空字符串。 但是我不明白空字符串在哪里/為什么形成。

我已經閱讀了有關此錯誤類型的其他一些答案,但是都涉及使用我不熟悉的Python功能的代碼,因此無法理解。 我只是一個初學者! 所以,請幫忙!

對於違反有關問題形成的任何規則表示歉意!

您在那里有一個空格,而不是一個空字符串。 最有可能的是,您只需在輸入末尾敲擊空格鍵,Python無法將其轉換為整數。 您可以只是確保在結尾處不留空格,也可以對輸入進行一些檢查(例如,添加行number = number.strip()以刪除任何尾隨空格)。

驗證您的輸入為數字,並去除所有空格:

number ='123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'

def foo(number):
    number = number.strip()
    if number.isdigit():
        i = 0
        L = []
        while (i in range(len(number)-3)):
            a = int(number[i])
            b = int(number[i+1])
            c = int(number[i+2])
            d = int(number[i+3])
            product = a*b*c*d
            L.append(product)
            i = i+1
        return max(L)

如果用戶提供了無效的輸入(例如“ Alexander”),則此函數應返回None ,這應該避免您描述的錯誤:

還有一些示例,說明用戶何時在代碼Eg中輸入字符串“ Alexander”作為輸入:int(input(“ Enter a number”))

您還可以使用generator語句僅對一set唯一結果進行簡化:

def foo2(number):
    number = number.strip()
    if number.isdigit():
        return max({int(number[i]) * int(number[i+1]) * int(number[i+2]) * int(number[i+3]) for i in range(len(number)-3)})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM