所以假设给你两个字符串,有隐藏的值,你想知道它们是否有可能是相同的,例如你有'jupiter'这个词,现在让'^'代表隐藏的值,因为例如: 'jupiter' 可以等于 = 'j^^^t^r ,但不是 'j^^^' 因为那只有 4 个字符,或者 '^a^^^^' 因为第二个字符在 'jupiter' 中是 int a . 我不知道如何启动程序,再次感谢大家!
另外,python的新手,谢谢大家!
我会这样做:
for index, letter in enumerate(word):
来简化这一点。letter
中相同位置的字母进行比较。word2
word2[index]
letter
is not a^
并且单词中的两个字母不同return False
,因为这两个单词不能相同。return True
.这是一个神秘的单线,仅供参考:
len(w1) == len(w2) and all(a == b or '^' in a + b for a, b in zip(w1, w2))
或使用正则表达式:
re.match('^{}$'.format(w2.replace('^', '.')), w1)
def match(st,t):
if len(st)!=len(t):
return False
for i,j in zip(t,st):
if i!="^" and i!=j:
return False
return True
>>> st="jupiter"
>>> t="j^p^^e^"
>>> match(st,t)
True
>>> t="j^"
>>> match(st,t)
False
>>> t="j^pit^e"
>>>
>>> match(st,t)
False
>>> def compare(A,B):
... if not len(A) == len(B): return False
... return all(a == b or a == '^' or b == '^' for a,b in zip(A,B))
...
>>> compare('j^^^t^r','jupiter')
True
这应该工作:
def match(a,b):
if len(a)!=len(b):
return "strings don't match"
else:
for x,y in zip(a,b):
if not(any((x=="^",y=="^")) or x==y):
return "strings don't match"
return "matched"
print match("jupiter","j^^^t^r")
print match("jupiter","^a^^^^^")
print match("abc","^b^")
print match("abc","b^^")
输出:
matched
strings don't match
matched
strings don't match