如何在python中将复数作为用户输入?

时间:2016-09-09 14:07:32

标签: python python-2.7 input calculator complex-numbers

我正在尝试构建一个执行复杂数字基本操作的计算器。我使用的代码是我在网上找到的计算器,我希望能够将用户输入作为复数。现在代码使用int(输入)来获取要计算的整数,但我希望输入采用复数形式,格式为complex(x,y),其中用户只需输入x,y复数。我是python的新手,所以鼓励解释,如果它是不可能的事情,那就太棒了。这是现在的代码:

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

4 个答案:

答案 0 :(得分:3)

将您的输入传递给complex类型功能。也可以使用字符串作为参数调用此构造函数,它将尝试使用Python的复数表示来解析它。

实施例

my_number = complex(input("Number"))

请注意,Python使用“j”作为虚构组件的符号;您必须告诉您的用户以这种格式输入数字:1+3j

如果您希望计算器支持不同的语法,则必须解析输入并自行将其提供给complex构造函数。正则表达式可能有所帮助。

答案 1 :(得分:1)

为了从用户那里获得复杂的类型输入,我们必须使用 @sleblanc 建议的复杂类型函数。如果你想分开真实和想象的部分,你必须这样做:

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

示例输出: -

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

答案 2 :(得分:1)

没有这种方法可以在Python中直接输入复数。但是我们该怎么办呢? 方法1-    以字符串作为输入,然后将其转换为复数。 方法2-    取两个单独的数字,然后将它们转换为复数。

方法1的代码

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

方法2的代码

a=int(input())         
b=int(input())
c=complex(a,b) 

答案 3 :(得分:0)

我知道这是一个老问题并且已经解决了,但是我对它进行了一些有趣的处理并包括 numpy 来报告结果复数的角度:

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

我喜欢它,但我可能会修剪一些结果数字的长度,哈哈:

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