我想把vocal_start
应用到这么多不同的变量上,我不能处理所有的变量,我也不会总是重复startswith
。所以我不想写variable1.startswith(("a", "e", "i", "o", "u"))
,但是我想应用startswith((“a”,“e”,“i”,“o”,“u”))直接指向所有变量,而不指定variable1.startswith
(类似于我的代码)。
我猜使用startswith
就像这样(variable1.startswith),那么还有什么我可以使用的吗?我需要一些像我的代码一样的东西,但不是用startswith(或者如果可能的话,我想用不同的startswith)
vocal_start = startswith(("a", "e", "i", "o", "u"))
variable1 = "open"
#Only for Test
if variable1 == vocal_start:
print("correct")
当然,在代码中,我得到了NameError: name 'startswith' is not defined
,因为我没有指定variable1.startswith((“a”,“e”,“i”,“o”,“u”)),但正如我所说,我不想走这条路
6条答案
按热度按时间brccelvz1#
如果要检查的值都是1个字符(或长度相同),则可以使用
in
运算符和一个子字符串来获取第一个字母:或
v440hwme2#
你可以写一个
function
来检查提供的字符串是否以元音开头:xxe27gdn3#
这很傻,但你可以使用
operator.methodcaller
来创建一个函数,该函数在任何变量上调用,将使用提供的参数调用命名的方法,例如:需要明确的是,没有理由这样做。这只是在代码中不必要地分割程序逻辑的简单部分,而不是将其保持在一起。在真实的的代码中,我会这样做:
或者如果要使用的前缀集在多个地方使用并且足够长以值得分解:
lsmepo6l4#
如果你不介意写一些晦涩难懂的代码,你可以让你想要的形式工作,写一个类,它的
__eq__
可以做你想要的事情,然后用这个类的一个示例来比较。dffbzjpn5#
编辑数量
f1tvaqid6#
使用regex而不是
startswith()
怎么样?正则表达式的实现可能如下所示:关于
r"^[aeiou]"
:r" ... "
是一个raw string,通常用于正则表达式模式。^
简单地表示 * 以 * 开头。[aeiou]
是一组允许的字符。我可能会将正则表达式 Package 在一个函数中,以使其更具可读性和 pythonic。如果函数经常使用,在函数外部编译模式可能会提高性能:
我希望这对你有帮助。