Python 将函数导入新文件不起作用
我的程序旨在创建一个名为MyTriangle的模块,该模块读取三角形的三条边,并在输入有效时计算面积。如果输入无效,将显示“输入无效”。这个程序运行得很好。唯一的问题是,我试图将模块(除主函数外的所有内容)导入到另一个文件中。我以前从未这样做过,也找不到任何地方能给出明确的指示。这是我的密码: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)
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()