我尝试编写的代码采用格式'命令arg1 arg2'的字符串,现在,我卡住了,不知道如何编写有效的命令检查,有效命令在哪里添加'或者' sub'或者' mul'或者' div'。如果该命令不是有效命令,则会引发InvalidCommand()。
这是我的代码:
class InvalidCommand(Exception):
pass
def validate_input(string):
"""
validate_input(str) -> (str, [float])
If string is a valid command, return its name and arguments.
If string is not a valid command, raise InvalidCommand
Valid commands:
add x y
sub x y
mul x y
div x y
Arguments x and y must be convertable to float.
"""
li = []
if len(string.split(' ')) != 3:
raise InvalidCommand()
else:
try:
float(string.split(' ')[1])
float(string.split(' ')[2])
except ValueError:
raise InvalidCommand()
x = float(string.split(' ')[1])
y = float(string.split(' ')[2])
li.append(x)
li.append(y)
z = (string.split(' ')[0], li)
return z
答案 0 :(得分:0)
我认为这可以解决问题
VA=['add', 'sub', 'mul', 'div']
string=string.split()
if string[0] not in VA:
raise InvalidCommand()
elif len(string) !=3:
raise InvalidCommand()
else:
try:
return (string[0],[float(string[1]),float(string[2])])
except ValueError:
raise InvalidCommand()