我正在尝试构建一个执行复杂数字基本操作的计算器。我使用的代码是我在网上找到的计算器,我希望能够将用户输入作为复数。现在代码使用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")
答案 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