我尝试在python 3.6中运行此代码
def Arrange(num):
global sec
sec=0
def Digit(nmb):
return nmb%10
def WithoutTheLastDigit(nmb2):
return nmb2//10
def IsEven(even):
if even%2==0:
return True
else:
return False
def AddDigit(number,dig):
number=number*10+dig
while num>0:
Digit(num)
if IsEven(Digit(num))==True:
sec=sec+AddDigit(sec,Digit(num))
WithoutTheLastDigit(num)
print(sec)
并显示此错误:
>>>排列(500) Traceback(最近一次调用最后一次): 文件"",第1行,in 排列(500) 在安排中的文件" C:\ Users \ Yair \ Desktop \ hw3.py",第56行 秒=秒+ AddDigit(秒,数字(NUM)) TypeError:+:' int'不支持的操作数类型和' NoneType'
答案 0 :(得分:2)
您的问题是函数AddDigit()
返回None
:
def AddDigit(number,dig):
number=number*10+dig
# this return None by default. mussing `return number`
while num>0:
Digit(num)
if IsEven(Digit(num))==True:
sec=sec+AddDigit(sec,Digit(num)) # This is 0 + None
WithoutTheLastDigit(num)
请注意,您可以通过一些操作简化代码。我没有改变逻辑,所以你可能会有一些错误。
def Digit(number):
return number % 10
def WithoutTheLastDigit(number):
return number // 10
def IsEven(number):
return number % 2 == 0:
def AddDigit(number, digit):
return number*10 + digit
while number > 0:
digit = Digit(number)
if IsEven(digit):
sec += AddDigit(sec, digit)
print(sec)