How to get a complex number as a user input in python?
Asked Answered
O

5

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")
Ostracod answered 9/9, 2016 at 14:7 Comment(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.)Squalid
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).Cutoff
P
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.

Pentecost answered 9/9, 2016 at 14:13 Comment(2)
Alternatively, you might replace i with j in the input before passing it to complex.Hackman
I tried replacing int(input) with complex(input) and used the format you said, but I got Invalid Input.Ostracod
P
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
>>> 
Potato answered 14/4, 2018 at 9:3 Comment(0)
T
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) 
Tanana answered 8/8, 2019 at 0:9 Comment(0)
A
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

Arciniega answered 20/12, 2020 at 15:17 Comment(0)
L
-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()
Lotuseater answered 13/6, 2024 at 4:30 Comment(1)
Please format your answer by fencing your code in a codeblock. Also, do not post images of code for these reasons.Bitters

© 2022 - 2025 — McMap. All rights reserved.