我與編程新手和我有麻煩,此代碼:麻煩與變量(Python)的
def supercalcx(a, b):
n = a
while a <= b:
n = n * a
a = a + 1
print(n)
的IDE給我的錯誤:「類型錯誤:無法通過非乘序列-int類型'str'「,但我確定輸入是整數或浮點數,任何人都可以向我解釋問題。謝謝 !
我與編程新手和我有麻煩,此代碼:麻煩與變量(Python)的
def supercalcx(a, b):
n = a
while a <= b:
n = n * a
a = a + 1
print(n)
的IDE給我的錯誤:「類型錯誤:無法通過非乘序列-int類型'str'「,但我確定輸入是整數或浮點數,任何人都可以向我解釋問題。謝謝 !
此功能:
>>> def supercalcx(a, b):
... n = a
... while a <= b:
... n = n * a
... a = a + 1
... print(n)
...
>>> supercalcx(2, 4)
48
您的功能不會將數據類型之間的轉換。這方面的一個非常粗略的方法是做如下如下:
def supercalcx(a,b):
n = int(a)
a = int(a)
b = int(b)
while a <= b:
n = n * a
a = a + 1
print(n)
一對夫婦的建議,以改善你的代碼:
函數應該很少有它內部的print()
功能;而是使用return
關鍵字。您可以將a = a + 1
更改爲a += 1
和n = n * a
至n *= a
。您還可以引入try
和except
這將嘗試執行無論是try
下標籤,如果發生拋出由except
塊指定一個錯誤,它會再執行任何被except
下標籤。稍微改進的版本如下:
def supercalcx(a, b):
try:
n = int(a)
a = int(a)
b = int(b)
except ValueError:
return "Unable to convert to integers!"
while a <= b:
n *= a
a += 1
return n
print(supercalcx("1", 2))
print(supercalcx(1, 2))
當你調用它時,你傳遞給你的'supercalcx()'函數的參數是什麼?如果您在傳遞變量的情況下不知道,請包含更多代碼。 – Jerrybibo