我有一个函数,用户可以输入字符串s
。
如果s
中的任何字符不在"0123456789e+-. "
中,则该函数应返回False
。
我尝试过:
if any(s) not in "0123456789e+-. ":
return False
此:
if any(s not in "0123456789e+-. "):
return False
还有:
if any(character for character in s not in "0123456789e+-. "):
return False
在这种情况下,我应该如何使用any()
函数?
答案 0 :(得分:3)
您要遍历s
中的每个字符,并检查它是否不在集合"0123456789e+-. "
中
chars = set("0123456789e+-. ")
if any(c not in chars for c in s):
return False
在这种情况下,您也可以使用all检查相同的条件
chars = set("0123456789e+-. ")
if not all(c in chars for c in s):
return False
答案 1 :(得分:3)
只是相差set
:
pattern = "0123456789e+-. "
user_input = '=-a'
if set(user_input) - set(pattern):
return False
或仅测试否定子集:
if not set(user_input) < set(pattern):
return False
https://docs.python.org/3.7/library/stdtypes.html#set-types-set-frozenset