def intToBin(n):
if n == 0:
return 0
elif n == 1:
return 1
elif n > 1:
return ((n % 2 10 * intToBin((n/2))))
a = 6
b = intToBin(a)
print(b)
uj5u.com熱心網友回復:
您需要將 int(n/2) 傳遞給函式,因為如果 n/2 是浮動的,則當值小于 1 時會導致代碼錯誤。請參閱下面的解決方案
def intToBin(n):
if n == 0:
return 0
elif n == 1:
return 1
elif n > 1:
return ((n % 2 10 * intToBin(int(n/2))))
a = 6
b = intToBin(a)
print(b)
輸出 :
110
uj5u.com熱心網友回復:
您的代碼:
def intToBin(n):
if n == 0:
return 0
elif n == 1:
return 1
elif n > 1:
return ((n % 2 10 * intToBin((n/2))))
a = 6
b = intToBin(a)
print(b)
在python3中,n/2是浮點除法運算。所以在遞回呼叫中,正在傳遞一個浮點數。現在當這個浮點數小于 1 時,沒有if-else滿足條件的塊,因此函式回傳 None。10 與遞回呼叫中的 None 相乘會導致錯誤。
為了除錯和更好的理解,列印 n:
def intToBin(n):
print(n)
...rest of your code
輸出:
6
3.0
1.5
0.75
Traceback (most recent call last):
File "zz.py", line 11, in <module>
b = intToBin(a)
File "zz.py", line 8, in intToBin
return ((n % 2 10 * intToBin((n/2))))
File "zz.py", line 8, in intToBin
return ((n % 2 10 * intToBin((n/2))))
File "zz.py", line 8, in intToBin
return ((n % 2 10 * intToBin((n/2))))
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
到修復:
如以上回答,使用任一int(n/2)或n//2或具有默認堿或功能的情況下回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/400097.html
