python 3:导入模块

时间:2017-10-17 19:55:30

标签: python python-3.x

我正在研究一个评估两个矩形区域的小程序。用户输入矩形的长度和宽度(我的第一个模块),然后程序计算矩形的面积(第二个模块),最后在计算两个区域之间的差异后,显示结果,告诉哪一个是更大的。

但是输入长度和宽度后,程序会显示一条错误消息,告诉我的模块没有定义为:

ImportError: No module named 'inputRect'

我的代码:

#Project M04: Rectangle with the bigger area
#Python 3.4.3

#Module that asks width and lenght of the two rectangles
def inputRect():

    width1 = int(input("Enter the width of the first rectangle: "))

    length1 = int(input("Enter the length of the first rectangle: "))

    width2 = int(input("Enter the width of the second rectangle: "))

    lenght2 = int(input("Enter the length of the second rectangle: "))

inputRect()

#import the fonction "inputRect"
import inputRect

#calcule the area of the two rectangles
def calcArea():

    rect1 = int(width1) * int(length1)

    rect2 = int(width2) * int(length2)

calcArea()

#import the fonction "calcArea"
import calcArea

#Calcul the difference between the two rectangles (rectangle 1 - rectangle 2 = difference)
#if > 0
def difference():

    difference = int(rect1) - int(rect2)
    # if ifference > 0 : rectangle 1 has a bigger area
    if (difference) > 0 :
        print ("Rectangle numer 1 is bigger than rectangle 2")
    # if ifference < 0 : rectangle 2 has a bigger area
    if (difference) < 0 :
        print ("Rectangle numer 2 is bigger than rectangle 1")
    # else : both rectangles have the same area
    else:
        print ("Both rectangles have the same area")

difference()

2 个答案:

答案 0 :(得分:1)

注意:

  • 了解模块和功能之间的区别。您无法导入功能,在本例中为inputRectcalcArea
  • 既然您想为每个流程创建功能,请尝试在您的函数中使用return来获取所需的数据
  • 仍然在精神上使用功能,你可以分开一些计算。例如,不是在一个函数中计算两个矩形,而是创建一个仅计算区域的函数,给定widthlength

这样的事情就是一个例子:

def get_rect_input():
    width1 = int(input("Enter the width of the first rectangle: "))
    length1 = int(input("Enter the length of the first rectangle: "))
    width2 = int(input("Enter the width of the second rectangle: "))
    lenght2 = int(input("Enter the length of the second rectangle: "))
    return width1, length1, width2, lenght2


def calculate_area(width, length):
    return width * length


def show_comparation(width1, length1, width2, lenght2):
    area1 = calculate_area(width1, lenght2)
    area2 = calculate_area(width2, lenght2)

    if area1 > area2:
        print ("Rectangle number 1 is bigger than rectangle 2")
    elif area1 < area2:
        print ("Rectangle number 2 is bigger than rectangle 1")
    else:
        print ("Both rectangles have the same area")


if __name__ == "__main__":
    width1, lenght1, width2, lenght2 = get_rect_input()
    show_comparation(width1, lenght1, width2, lenght2)

答案 1 :(得分:1)

导入

您不必导入您正在使用的模块中的函数(即:您启动的文件的代码)。

def inputRect():
    "Returns width and lenght in 2 tuples"
    w1 = int(input("Width 1st rectangle: "))
    l1 = int(input("Lenght 1st rectangle: "))
    w2 = int(input("Width 2nd rectangle: "))
    l2 = int(input("Lenght 2nd rectangle: "))
    # tuple 1 (w & l of rect 1) - tuple 2 (w & l of r2)
    return (w1, l1), (w2, l2)

# get the 2 tuple into r1 and r2 to calculate the area
r1, r2 = inputRect()


def calcArea():
    "Uses the tuples to calculate area and returns results"
    area1, area2 = r1[0] * r1[1], r2[0] * r2[1]
    return area1, area2

# This variable memorizes the two areas
rect = calcArea()


def difference():
    "Calculates which one area is bigger"
    difference = rect[0] - rect[1]
    # if ifference > 0 : rectangle 1 has a bigger area
    if (difference) > 0:
        print("Rectangle numer 1 is bigger than rectangle 2 by", rect[0] - rect[1])
    # if ifference < 0 : rectangle 2 has a bigger area
    elif (difference) < 0:
        print("Rectangle numer 2 is bigger than rectangle 1 by", rect[1] - rect[0])
    # else : both rectangles have the same area
    else:
        print("Both rectangles have the same area")


difference()
  

输出:

Width 1st rectangle: 10
Lenght 1st rectangle: 10
Width 2nd rectangle: 20
Lenght 2nd rectangle: 20
Rectangle numer 2 is bigger than rectangle 1 by 300