即使返回值不是 None,为什么也会打印 None (仅在 else 条件下发生)

Dev*_*Dev 1 python

def armstrong(x):
    number = str(x)
    length = len(number)
    sum=0
    for i in number:
        sum = sum + pow(int(i),length)

    print("Yes {0} is an Armstrong Number" .format(x) if(sum==x) else print("No {0} is not an Armstrong Number" .format(x)))   

    return 0


num=int(input("Enter a Number: "))
armstrong(num) 
Run Code Online (Sandbox Code Playgroud)

对于非阿姆斯特朗数字,输出带有“无”,有人可以解释其背后的原因吗?我已将输出附加为相同的图像链接。

日志

Ofe*_*dan 6

你有一个printinside another print,并且由于print总是返回None,所以这就是你要打印的内容。我猜这就是你所需要的:

print("Yes {0} is an Armstrong Number".format(x) if(sum==x) else "No {0} is not an Armstrong Number".format(x))
Run Code Online (Sandbox Code Playgroud)

PS 尽量不要使用这个词,sum因为你正在隐藏一个内置函数