Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将函数导入新文件不起作用_Python_Function_If Statement_Import_Module - Fatal编程技术网

Python 将函数导入新文件不起作用

Python 将函数导入新文件不起作用,python,function,if-statement,import,module,Python,Function,If Statement,Import,Module,我的程序旨在创建一个名为MyTriangle的模块,该模块读取三角形的三条边,并在输入有效时计算面积。如果输入无效,将显示“输入无效”。这个程序运行得很好。唯一的问题是,我试图将模块(除主函数外的所有内容)导入到另一个文件中。我以前从未这样做过,也找不到任何地方能给出明确的指示。这是我的密码: side1, side2, side3 = eval(input("Enter three sides in a double: ")) def isValid(side1, side2, side3)

我的程序旨在创建一个名为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()
我尝试使用“defmain()”部分并将其自身放入一个文件中。用代码“MyTriangle.py”的其余部分命名文件时


当我运行程序时,它会询问“在双精度中输入三个边:”。当我输入数字时(例如:1,1,1),它会说未定义名称“isValid”。我不确定我是否正确地导入了它。就我个人而言,我无法理解这一点。请提供一点帮助?

当您说导入myTriangle时,您正在将
myTriangle
定义为另一个模块。该模块中定义的变量作为
myTriangle
的属性访问。您可以使用
myTriangle.isValid(…)
而不是
isValid(…)
。或者,您可以说
来自myTriangle导入*
,而不是
导入myTriangle
。使用myTriangle import*中的
myTriangle
中定义的所有变量放入本地名称空间,以便无需在开头放置
myTriangle
即可访问这些变量。

当您说
import myTriangle
时,您将
myTriangle
定义为另一个模块。该模块中定义的变量作为
myTriangle
的属性访问。您可以使用
myTriangle.isValid(…)
而不是
isValid(…)
。或者,您可以说
来自myTriangle导入*
,而不是
导入myTriangle
。使用myTriangle导入中的
*
myTriangle
中定义的所有变量放入本地名称空间,这样就可以访问这些变量,而无需在开始时放入
myTriangle

我不确定这是否解决了问题,因为现在一旦我将数字输入到程序中,我将一无所获。我是否正确导入了所有内容?我会将
side1、side2、side3=eval(…)
放入
main()
函数中。您可以在
myTriangle.py
中保留
main()
函数,在另一个脚本中,只需说
import myTriangle
myTriangle.main()
。不过,我不知道你为什么想要另一个脚本。我尝试了你所说的,不幸的是它不起作用。没有错误,只是在我输入数字后没有显示任何内容。它转到下一行。它应该显示数字区域或一条错误消息,说明“输入无效”。好的,我非常感谢您的帮助!我不确定这是否解决了问题,因为现在一旦我把数字输入程序,我什么也得不到。我是否正确导入了所有内容?我会将
side1、side2、side3=eval(…)
放入
main()
函数中。您可以在
myTriangle.py
中保留
main()
函数,在另一个脚本中,只需说
import myTriangle
myTriangle.main()
。不过,我不知道你为什么想要另一个脚本。我尝试了你所说的,不幸的是它不起作用。没有错误,只是在我输入数字后没有显示任何内容。它转到下一行。它应该显示数字区域或一条错误消息,说明“输入无效”。好的,我非常感谢您的帮助!
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()