Pak
Pak

Reputation: 157

python 3: import module

I'm working on a small program that evaluates the area of two rectangles. The user enters the length and the width of the rectangle (my first module), then the program calculates the area of the rectangles (second module), and finally after calculating the difference between both of the areas, display the result, telling which one is the bigger.

But after entering the lengths and widths, the program displays an error message, telling that my module is not defined as:

ImportError: No module named 'inputRect'

My Code:

#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()

Upvotes: 0

Views: 296

Answers (2)

PythonProgrammi
PythonProgrammi

Reputation: 23463

Importing

You don't have to import a function that is in the module you are using (i.e.: the code of the file that you launch).

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()

OUTPUT:

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

Upvotes: 1

Pangeran Bottor
Pangeran Bottor

Reputation: 418

Notes:

  • understand difference between module and function. You can't import a function, in this case inputRect and calcArea
  • since you want to create function for each process, try to utilize return in your function to get data that you need
  • still in the spirit using function, you can separate some calculations. For example, instead of compute two rectangles in one function, create a function that only calculate an area, given width and length

Something like this could be an example:

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)

Upvotes: 1

Related Questions