Python 测试三个数字是否构成直角三角形边的程序

Python 测试三个数字是否构成直角三角形边的程序,python,python-3.x,Python,Python 3.x,这是我到目前为止的计划: def main4(): if isRight(): print('it is right') if not isRight(): print('it is not right') def isRight(): n1=int(input('Enter first number:')) n2=int(input('Enter second number:')) n3=int(input('Enter

这是我到目前为止的计划:

def main4():
    if isRight():
        print('it is right')
    if not isRight():
        print('it is not right')
def isRight():
    n1=int(input('Enter first number:'))
    n2=int(input('Enter second number:'))
    n3=int(input('Enter third number:'))
    if n1<n2 and n1<n3:
        smallest=n1
    elif (n1<n2 and n1>n3) or (n1<n3 and n1>n2):
        smaller=n1
    elif n2<n1 and n2<n3:
        smallest=n2
    elif (n2<n1 and n2>n3) or (n2<n3 and n2>n1):
        smaller=n2
    elif n3<n2 and n3<n1:
        smallest=n3
    elif (n3<n2 and n3>n1) or (n3<n1 and n3>n2):
        smaller=n3
    elif n1>n2 and n1>n3:
        largest=n1
    elif n2>n1 and n2>n3:
        largest=n2
    else:
        largest=n3
    if largest**2==(smallest**2)+(smaller**2):
        return true
    else:
        return false
def main4():
如果isRight():
打印('是正确的')
如果不是isRight():
打印('不正确')
def isRight():
n1=int(输入('输入第一个数字:'))
n2=int(输入('输入第二个数字:'))
n3=int(输入('输入第三个数字:'))

如果n1代码的结构工作方式是只进入9个条件块中的一个,则必须计算
较小
最小
最大
的值。当它从这些块中的一个出来时,只声明
较小的
最小的
最大的
中的一个。因此,当代码到达执行语句的点时

if largest**2==(smallest**2)+(smaller**2):
if只找到这三个变量中的一个,从而抛出您看到的错误。要解决此问题,您可以在使用以下命令获取用户输入后声明所有三个变量:

smallest=largest=smaller=0
在你要求用户输入变量之后,你应该让你的程序开始工作

代码中的其他一些问题:

  • True
    和'False
    是python中定义的关键字,
    True
    和'False
    不是。因此,请确保使用大写的单词来表示这些内容
  • main4
    例程中,第二个
    if
    可以替换为
    else
    。在当前代码中,将调用函数
    isRight
    两次,这是不必要的
  • 您可以将计算
    较小
    最小
    最大
    变量的条件简化为:

    smallest = min(n1, n2, n3)
    largest = max(n1, n2, n3)
    smaller = list(set([n1, n2, n3]) - set([smallest, largest]))[0]
    

在使用局部变量
最大值之前,必须指定一个值

def main4():
    result = isRight()

    if result:
        print('it is right')
    else:
        print('it is not right')

def isRight():
    largest = 0              # <-
    smallest = 0             # <-
    smaller = 0              # <-
    ...

    # calculate each other
    if largest**2==(smallest**2)+(smaller**2):
        ...
def main4():
结果=isRight()
如果结果为:
打印('是正确的')
其他:
打印('不正确')
def isRight():

最大值=0#您的条件仅设置一个变量。您需要将长if/elif链拆分为3个部分,每个部分设置一个
最小的
较小的
,和
最大的
最大的
最小的
,和
较小的
def main4():
    result = isRight()

    if result:
        print('it is right')
    else:
        print('it is not right')

def isRight():
    largest = 0              # <-
    smallest = 0             # <-
    smaller = 0              # <-
    ...

    # calculate each other
    if largest**2==(smallest**2)+(smaller**2):
        ...