Python 寻找数字是否是完美立方体

Python 寻找数字是否是完美立方体,python,Python,大家好,我刚刚开始学习python,我正在尝试编写一个函数,以确定用户输入的数字是否是一个完美的立方体 def isPerfectCube(): for i in range(2,int(x/3)): if (i**3)==x: print('Number is a perfect cube') else: print ('Not a perfect cube') print('Enter a number

大家好,我刚刚开始学习python,我正在尝试编写一个函数,以确定用户输入的数字是否是一个完美的立方体

def isPerfectCube():
    for i in range(2,int(x/3)):

        if (i**3)==x:
            print('Number is a perfect cube')
        else:
            print ('Not a perfect cube')
print('Enter a number')
x=int(input())
isPerfectCube()
但每次我输入一个不是完美立方体的数字,它就会打印出来:

不是一个完美的立方体


直到for循环完成。我只希望它打印一次。

如果您坚持使用类似这样的for循环,则应使用布尔值作为标志,然后按如下方式打印输出:

def isPerfectCube():
    isCube = false
    for i in range(2,int(x/3)):

        if (i**3)==x:
            isCube = true
    if isCube:
            print('Number is a perfect cube')
    else:
            print ('Not a perfect cube')
print('Enter a number')
x=int(input())
isPerfectCube()
因为您正在运行所有数字,直到数字/3,并测试它是否匹配。它有很多数字,对于每个测试,你都在打印!但是你需要打印一次!
一个更简单、更快的解决方案是(没有for循环):


因为您不需要测试1到
x/3
之间的所有数字,所以只需要测试
x/3
的幂是否为x

谢谢你的意见,我尝试了这个,似乎效果不错。我想尝试使用函数

def isPerfectCube():
    for i in range(2,int(x/3)):

        if (i**3)==x:
            print('Number is a perfect cube')
            break
    if(i**3)!=x:
      print('Not a cube')
print('Enter a number')
x=int(input())
isPerfectCube()

您想在代码的
else
部分的
print
之后添加一条语句。
break
语句将把您踢出
for循环
。您实际上希望迭代可能的
i
,直到
if
条件为真或for循环退出(没有更多可能的数字)。只有到那时你才知道,
x
不是一个完美的立方体。把它弄明白。def isPerfectCube():对于范围(2,int(x/3))中的i:if(i3)==x:print(‘数字是一个完美的立方体’)如果(i3)=x:print('nota cube')print('enta number')x=int(input())isPerfectCube()正如我在回答中提到的,您的for循环真的没有必要!!
def isPerfectCube():
    for i in range(2,int(x/3)):

        if (i**3)==x:
            print('Number is a perfect cube')
            break
    if(i**3)!=x:
      print('Not a cube')
print('Enter a number')
x=int(input())
isPerfectCube()