我正在尝试构建一个可以执行复数基本运算的计算器。我正在使用在网上找到的计算器代码,我希望能够将用户输入视为复数。现在,代码使用 int(input) 来获取要计算的整数,但我希望输入采用复数形式,格式为 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")
将您的输入传递给
complex
类型函数。该构造函数也可以使用字符串作为参数来调用,并且它将尝试使用 Python 的复数表示来解析它。
示例
my_number = complex(input("Number"))
注意Python使用“j”作为虚部的符号;您必须告诉您的用户以这种格式输入数字:
1+3j
如果您希望计算器支持不同的语法,则必须自己解析输入并将其提供给
complex
构造函数。正则表达式可能会有帮助。
为了从用户那里获取复杂类型输入,我们必须使用 @sleblanc 建议的 complex 类型函数。如果你想分离实部和虚部,那么你必须这样做:
complx = complex(input());
print(complx.real, complx.imag);
输出示例:-
>>> complx = complex(input());
1+2j
>>> print(complx.real, complx.imag);
1.0 2.0
>>>
Python中没有直接输入复数的方法。但我们能做的就是取一个复数。 方法1- 将刺痛作为输入,然后将其转换为复数。 方法2- 取两个单独的数字,然后将它们转换为复数。
方法 1-
的代码a = input() # user will enter 3+5j
a = complex(a) # then this will be converted into complex number.
方法 2-
的代码a ,b = map(int, input().split())
c = complex(a, b)
我知道这是一个老问题并且已经解决了,但我有一点乐趣搞乱它并包括 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
类复合体: 定义总和(自身): n=int(input("您要添加多少个数字:")) self.num1=[] self.num2=[] a=0 b=0 对于范围 (1,n+1) 中的 i: print("请输入数字",i,": ") print("输入 num 的实部",i,": ",end=" ") self.num1.append(int(input())) print("输入 num 的 img 部分",i,": ",end=" ") self.num2.append(int(input())) print("以下是您输入的复数:") 对于范围 (n) 内的 i: print(self.num1[i],"i+",self.num2[i],"j") 对于范围内的 i(0,len(self.num1)): a=a+self.num1[i] 对于范围内的 i(0,len(self.num2)): b=b+self.num2[i] print("给定复数的总和是:",a,"i+",b,"j") n1=复数() n1.sum()