数字的鲁棒输入
描述
获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。
要求:
(1)无论用户输入何种内容,程序无错误;
(2)如果输入有误,请输出"输入有误"。
输入输出示例
1+2j
(-3+4j)
abd
输入有误
100+20
输入有误
1000*55
输入有误
我的代码
try:
num=input()
if "0x" in num:
print("输入有误")
elif '+' in num and num[-1]!='j':
print("输入有误")
elif '-'in num or '/'in num or '*' in num:
print("输入有误")
else :
num = eval(num)**2
print(num)
except:
print("输入有误")
更好的代码
s = input()
try:
if complex(s) == complex(eval(s)):
print(eval(s)**2)
except:
print("输入有误")
关于complex()
complex()将字符串、数字 转化成复数
>>> complex(1)
(1+0j)
>>> complex("1")
(1+0j)
>>> complex("a")
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
complex("a")
ValueError: complex() arg is a malformed string
complex('1') == complex(1)#Ture
complex('abc') == complex(abc)#error