0

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()
Sameer Mahajan
6181 gold badge9 silver badges33 bronze badges
asked Oct 17, 2017 at 19:55
1
  • Are you writing the programs separately and trying to import them back as modules ? Commented Oct 17, 2017 at 19:59

2 Answers 2

1

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)
answered Oct 17, 2017 at 20:45
Sign up to request clarification or add additional context in comments.

Comments

1

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
answered Oct 19, 2017 at 7:26

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.