![](/img/trans.png)
[英]ValueError: invalid literal for int() with base 10: '26.02.2018'
[英]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.