6

I'm trying to build a calculator that does basic operations of complex numbers. I'm using code for a calculator I found online and I want to be able to take user input as a complex number. Right now the code uses int(input) to get integers to evaluate, but I want the input to be in the form of a complex number with the format complex(x,y) where the user only needs to input x,y for each complex number. I'm new to python, so explanations are encouraged and if it's something that's just not possible, that'd be great to know. Here's the code as it is now:

# define functions
def add(x, y):
   """This function adds two numbers"""

   return x + y

def subtract(x, y):
   """This function subtracts two numbers"""

   return x - y

def multiply(x, y):
   """This function multiplies two numbers"""

   return x * y

def divide(x, y):
   """This function divides two numbers"""

   return x / y

# take input from the user
print("Select operation.")
print("1.Add")
print("2.Subtract")
print("3.Multiply")
print("4.Divide")

choice = input("Enter choice: 1, 2, 3, or 4: ")

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))

if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))

elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))

elif choice == '4':
   print(num1,"/",num2,"=", divide(num1,num2))
else:
   print("Invalid input")
2
  • if you want to do that to actually use it, do it as @sleblanc suggests. If you want to practice your programming skills, try doing it on your own. Everything is possible. In this case, you would just need to play with text manipulation a bit (stuff like split(), isalpha() etc.) Commented Sep 9, 2016 at 14:20
  • Calculators seem easy to make, but they generally have hardwired buttons and functions. Making a calculator with a general-purpose programming language, with a free text field for input, is a much greater challenge than beginners realize. Unless you actually require a custom-built calculator to suit a specific purpose, I recommend setting this aside and trying something else, like tic-tac-toe or Hangman. These are programs with a narrowly-defined purpose (unlike a calculator), and not much content to build (unlike an RPG). Commented Sep 9, 2016 at 14:21

6 Answers 6

7

Pass your input to the complex type function. This constructor can also be called with a string as argument, and it will attempt to parse it using Python's representation of complex numbers.

Example

my_number = complex(input("Number"))

Note that Python uses "j" as a symbol for the imaginary component; you will have to tell your user to input numbers in this format: 1+3j

If you would like your calculator to support a different syntax, you will have to parse the input and feed it to the complex constructor yourself. Regular expressions may be of help.

Sign up to request clarification or add additional context in comments.

2 Comments

Alternatively, you might replace i with j in the input before passing it to complex.
I tried replacing int(input) with complex(input) and used the format you said, but I got Invalid Input.
2

In order to get complex type input from user we have to use complex type function as suggested by @sleblanc. And if you want to separate real and imaginary part then you have to do like this:

complx = complex(input());
print(complx.real, complx.imag);

Example Output:-

>>> complx = complex(input());
1+2j
>>> print(complx.real, complx.imag);
1.0 2.0
>>> 

Comments

2

There is no such way to input directly a complex number in Python. But how we can do is take a complex number. Method 1- Take a sting as input then convert it into complex. Method 2- Take two separate numbers and then convert them into complex.

Code for Method 1-

a = input()          # user will enter 3+5j
a = complex(a)       # then  this will be converted into complex number.

Code for Method 2-

a ,b = map(int, input().split())
c = complex(a, b) 

Comments

0

I know this is an old question and is already solved, but I had a little fun messing with it and including numpy to report the angle of the resulting complex number:

import numpy as np

def add(x, y):
   """This function adds two numbers"""
   z1=x+y
   print(num1,"+",num2,"=", z1)
   return z1
...
...

num1 = complex(input("Enter first number: "))
num2 = complex(input("Enter second number: "))

if choice == '1':
   z2=add(num1,num2)
   print('mag = ', abs(z2))
   print('angle = ', np.angle(z2, deg=True))
...
...

I like it, but I might trim the length of some of the resulting numbers, lol:

Select operation.
1.Add
2.Subtract
3.Multiply
4.Divide
Enter choice: 1, 2, 3, or 4: 1
Enter first number: 2+2j
Enter second number: 1+j
(2+2j) + (1+1j) = (3+3j)
mag =  4.242640687119285
angle =  45.0

Comments

0
def add(x, y):
  """This function adds two numbers"""
  return x + y

def subtract(x, y):
  """This function subtracts two numbers"""
  return x - y

def multiply(x, y):
  """This function multiplies two numbers"""
  return x * y

def divide(x, y):
  """This function divides two numbers"""
  if y == 0:
    return "Error! Cannot divide by zero."
  return x / y

print("Select operation:")
print("1. Add")
print("2. Subtract")
print("3. Multiply")
print("4. Divide")

while True:
  # Take input from the user
  choice = input("Enter choice(1/2/3/4): ")

  # Check if the choice is one of the four options
  if choice in ('1', '2', '3', '4'):
    try:
      num1 = float(input("Enter first number: "))
      num2 = float(input("Enter second number: "))
    except ValueError:
      print("Invalid input. Please enter a number.")
      continue

    if choice == '1':
      print(num1, "+", num2, "=", add(num1, num2))

    elif choice == '2':
      print(num1, "-", num2, "=", subtract(num1, num2))

    elif choice == '3':
      print(num1, "*", num2, "=", multiply(num1, num2))

    elif choice == '4':
      print(num1, "/", num2, "=", divide(num1, num2))
    
    # Check if user wants to do another calculation
    next_calculation = input("Do you want to do another calculation? (yes/no): ")
    if next_calculation.lower() != 'yes':
      break
  else:
    print("Invalid Input")

1 Comment

Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
-1

You can do it using this code:

class complex:
    def sum(self):
    n=int(input("how many num's you want to add:"))
    self.num1=[]
    self.num2=[]
    a=0
    b=0
    for i in range(1,n+1):
      print("enter num",i,": ")
      print("enter real part of num",i,": ",end=" ")
      self.num1.append(int(input()))
      print("enter img part of num",i,": ",end=" ")
      self.num2.append(int(input()))
    print("Following are the complex numbers you have entered:")
    for i in range(n):
      print(self.num1[i],"i+",self.num2[i],"j")
    for i in range(0,len(self.num1)): 
        a=a+self.num1[i]
    for i in range(0,len(self.num2)): 
        b=b+self.num2[i]
    print("sum of given complex no.'s is:",a,"i+",b,"j")
n1=complex()
n1.sum()

Comments

Your Answer

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.