Python程序检查数字是否为3的次方:给出错误输出

2024-04-19 10:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

def if_powerof_3(n):
    var = None
    power  = 0
    if n % 3 == 0:
        while var == 1:
            var = n / 3
            power = power + 1
            if not var % 3 == 0:
                return "{} is not a power of 3".format(n)
                break
            else:
                n = var
        else:
            return "{} is a power of 3".format(n)
    else:
        return "{} is not a power of 3".format(n)

print if_powerof_3(18)

输出:18是3的幂

这是完全出乎意料的和错误的输出显然,但无法计算出哪里是我的代码去逻辑错误和打印一个数学上不正确的输出


Tags: ofnoneformatreturnifisvardef
2条回答

https://gist.github.com/bondnotanymore/9afc91cb1730c9b9f637326fafc69371

这是一段经过改进的代码,增加了一点健壮性。你知道吗

输出

C:\Python27\python.exe 
C:/Users/kapil/PycharmProjects/KapilsucksatPython/py/O.py
16 is not even a multiple of 3
27 is a number, which is 3th power of 3
21 is not a power of 3, but just a multiple of 3
243 is a number, which is 5th power of 3
729 is a number, which is 6th power of 3

进程已完成,退出代码为0

你为什么要用这么多,如果可以做得这么简单的话

def if_powerof_3(n):
    var = n
    power  = 0
    while var>1:
        if var%3 ==0:
            var=var/3
            power=power+1
        else:
             return "{} is not a power of 3".format(n)
    return "{} is a power of 3".format(n)
print (if_powerof_3(27))

相关问题 更多 >