欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

复数的相关计算与数字的鲁棒输入

程序员文章站 2022-07-10 16:17:39
今天做python123平台的题时遇到复数有点蒙,然后总结一下首先,原题如下数字的鲁棒输入描述获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬...

今天做python123平台的题时遇到复数有点蒙,然后总结一下

首先,原题如下

数字的鲁棒输入

描述

获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(1)无论用户输入何种内容,程序无错误;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(2)如果输入有误,请输出"输入有误"。

输入 输出
示例 1
1+2j
(-3+4j)
示例2
abd
输入有误

 

然后很久没见过复数的我受到上一题(字母的鲁棒输入)的思维误导觉得也要弄一个标准库,于是写下了这段代码(之前还有一段我以为计算机不能直接处理十六进制就直接写eval了,直接出局)

#版本1.0
maynum=input()
real=str(eval(maynum).real)
if real in "1234567890.":
    num=pow(eval(maynum),2)
    print(num)
else:
    print("输入有误")

结果还是错了,原因是小数的整数部分和小数部分是不可拆分的,这就难为我了,难道要把小数单独拎出来写一行代码吗?

不可能的,内心是极度不愿意的

那么不妨仿造复数来判断整数部分,然后就有了版本1.1

#版本1.1
maynum=input()
real=str(int(eval(maynum).real))#取复数的实部小数取整
if real in "1234567890":
    num=pow(eval(maynum),2)
    print(num)
else:
    print("输入有误")

 见证奇迹的时刻

>>>1+2j
>>>(-3+4j)

>>>1.2
>>>1.44

>>>0x123
>>>输入有误

>>>100**2
>>>输入有误

 success

之后看了看答案,发现竟然可以更加简洁,居然比我写的少一行

#版本2.0
s = input()
try:
    if complex(s) == complex(eval(s)):
        print(eval(s)**2)
except:
    print("输入有误")

于是我把我的又改进了一下

#版本1.2
maynum=input()
real=str(int(eval(maynum).real))#取复数的实部小数取整
if real in "1234567890":
    print(pow(eval(maynum),2))
else:
    print("输入有误")

当然没有什么大的改动//滑稽一下//

现在分析一下复数他是怎么玩出来的

众所周知,独属于复数运算的特殊运算有

1.获得实部虚部

复数的相关计算与数字的鲁棒输入

2.复数转化为实数复数的相关计算与数字的鲁棒输入

再想我脑子里也没了 

参考答案这里使用了complex函数的性质,这里的x可以是数,也可以是字符串(知识盲区)

THE END

参考python123原题:https://python123.io/student/courses/1521/groups/12973/problems/programmings/19356

本文地址:https://blog.csdn.net/staywithmoon/article/details/107349862