如何在Python中获取用户输入的复数?

问题描述 投票:0回答:5

我正在尝试构建一个可以执行复数基本运算的计算器。我正在使用在网上找到的计算器代码,我希望能够将用户输入视为复数。现在,代码使用 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")
python python-2.7 input calculator complex-numbers
5个回答
7
投票

将您的输入传递给

complex
类型函数。该构造函数也可以使用字符串作为参数来调用,并且它将尝试使用 Python 的复数表示来解析它。

示例

my_number = complex(input("Number"))

注意Python使用“j”作为虚部的符号;您必须告诉您的用户以这种格式输入数字:

1+3j

如果您希望计算器支持不同的语法,则必须自己解析输入并将其提供给

complex
构造函数。正则表达式可能会有帮助。


2
投票

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

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

输出示例:-

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

2
投票

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) 

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


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

© www.soinside.com 2019 - 2024. All rights reserved.