如何将结构模式匹配用于以下用例:
values = ["done 0.0", "done 3.9", "failed system busy"]
for v in values:
vms = v.split()
match vms:
case ['done', float()>0]: # Syntax error
print("Well done")
case ['done', float()==0]: # Syntax error
print("It is okay")
case ['failed', *rest]:
print(v)
请原谅我的语法错误,我写这篇文章是为了展示我的思维过程。
实现这种模式匹配的正确语法是什么?它甚至是可能的吗?
1条答案
按热度按时间rsaldnfx1#
if ...else
会更简单,但是如果你确实想要模式匹配,那么你有很多问题需要解决。你的字符串不包含浮点数,它包含一个字符串,* 可以 * 转换为浮点数。因此,要测试浮点数的值,您必须测试它是否为字符串形式的浮点数,然后转换为浮点数,再进行测试。'wildcard'字符是_
,它应该用来捕获不匹配的元素,用 *_捕获任意数量的其他元素。下面的代码做了我认为你想要的,可以作为进一步开发的基础。首先,Regex被用来测试模式中带有"guard"表达式的浮点数。Regex将拾取错误条目,如"3.x "。产生:
另一种不使用Regex的方法是编写一个检查函数,如下所示:
那么情况就是