全局变量python,不运行

时间:2018-05-01 16:11:29

标签: python

我尝试在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'

1 个答案:

答案 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)