问题描述:
请编写一个程序,能接受用户输入的一个复数的实部和虚部,输出其复数表示形式以及其模
问题分析:
从键盘接受输入;
计算模:设复数z=a+bi(a,b∈R),则复数z的模|z|=√a2+b2,它的几何意义是复平面上一点(a,b)到原点的距离。
输出复数表示形式和模。
方法一:
#example2_4_1.py
#coding=utf-8
import math
a=input("请输入复数的实部:")
b=input("请输入复数的虚部:")
c=math.sqrt(float(a)**2+float(b)**2)
print("输入的复数为:"+a+"+"+b+"j",",模为"+str(c))
a和b都通过input()函数得到字符串,然后在计算模c的时候,通过float()函数将a和b都转换为浮点数再计算。
方法二
#example2_4_2.py
#coding=utf-8
import math
x=input("请输入复数的实部和虚部:")
a,b=map(float,x.split())
c=math.sqrt(a**2+b**2)
print("输入的复数为:"+str(a)+"+"+str(b)+"j",",模为"+str(c))
请注意:输入实部和虚部的时候用空格分隔。如果该程序中a,b=map(float,x.split())改为a,b=map(float,x.split(","))则输入实部和虚部的时候用逗号分隔,即3.5,6.7。
x是通过input()函数得到的字符串(用空格分隔的实部和虚部,如"3.5 6.7"),然后通过字符串的split()方法得到元素为数字字符串的列表(如[‘3.5’, ‘6.7’]),再通过map()函数将float()函数作用于该列表,得到包含若干浮点值的map对象,再通过对map对象进行序列解包将浮点数(如3.5和6.7)分别赋给a和b,最后通过公式计算模c。
方法三
#example2_4_3.py
#coding=utf-8
x=input("请输入复数的实部和虚部:")
a,b=map(float,x.split())
m=complex(a,b)
c=abs(m)
print("输入的复数为:"+str(m),",模为"+str(c))
这里得到a和b的方法跟第2种方法一样,然后直接通过内置函数complex()得到复数,又直接通过内置函数abs()得到模c。