所以,假设你给了两个带有隐藏值的字符串,你想知道它们是否有可能是相同的,所以例如你有'jupiter'这个词,现在让我们说'^'代表隐藏值,例如: 'jupiter'可以等于='j ^^^ t ^ r,但不是'j ^^^'因为那只有4个字符,或者'^ a ^^^^',因为第二个字符在'jupiter'中是'a'。我不知道如何启动程序,再次感谢大家!
也是python的新手,谢谢你们!
答案 0 :(得分:3)
我会这样做:
for index, letter in enumerate(word):
来简化此操作。letter
与word2
中相同位置的字母进行比较(您可以使用word2[index]
)。letter
不是^
且字词中的两个字母不同,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)
答案 1 :(得分:0)
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
答案 2 :(得分:0)
>>> 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
答案 3 :(得分:0)
这应该有效:
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