导入功能到新文件不起作用

时间:2016-02-26 00:00:58

标签: python function if-statement import module

我的程序旨在创建一个名为MyTriangle的模块,该模块读取三角形的三个边,并在输入有效时计算该区域。如果输入无效,则显示“输入无效”。该程序运作良好。唯一的问题是我试图将模块(除主函数之外的所有内容)导入到不同的文件中。我以前从未这样做过,也找不到任何能给出明确指示的地方。这是我的代码:

side1, side2, side3 = eval(input("Enter three sides in a double: "))

def isValid(side1, side2, side3):

    return side1 + side2 > side3 and side1 + side3 > side2 and side2 + side3 > side1 

def area(side1, side2, side3):

    s = (side1 + side2 + side3) / 2;

    totalArea = (s * (s - side1) * (s - side2) * (s - side3)) ** 0.5    

    return totalArea

def main():  

    condition = isValid(side1, side2, side3)

    totalArea = area(side1, side2, side3)

    if condition:
        print("The area of the triangle is " + str(totalArea))
    else:
        print("input is invalid")

main()

我尝试使用“def main()”部分并将其放入文件中。用所有其余代码命名文件“MyTriangle.py”

import MyTriangle
def main():  

    condition = isValid(side1, side2, side3)

    totalArea = area(side1, side2, side3)

    if condition:
        print("The area of the triangle is " + str(totalArea))
    else:
        print("input is invalid")

main()

当我运行该程序时,它会询问“输入三个双方:”。当我把数字放入(例如:1,1,1)时,它说“名称'isValid'没有定义。我不确定我是正确地导入它还是什么。对于我的生活,我不能想一想。请帮帮忙吗?

1 个答案:

答案 0 :(得分:2)

当您说import myTriangle时,您将myTriangle定义为另一个模块。该模块中定义的变量作为myTriangle的属性进行访问。您可以使用myTriangle.isValid(...)代替isValid(...)。或者,您可以说from myTriangle import *而不是import myTriangle。使用from myTriangle import *myTriangle中定义的所有变量放入本地名称空间,以便可以在不将myTriangle放在开头的情况下访问它们。