0

所以假设给你两个字符串,有隐藏的值,你想知道它们是否有可能是相同的,例如你有'jupiter'这个词,现在让'^'代表隐藏的值,因为例如: 'jupiter' 可以等于 = 'j^^^t^r ,但不是 'j^^^' 因为那只有 4 个字符,或者 '^a^^^^' 因为第二个字符在 'jupiter' 中是 int a . 我不知道如何启动程序,再次感谢大家!

另外,python的新手,谢谢大家!

4

4 回答 4

3

我会这样做:

  1. 确保两个字符串的长度相同。如果他们不这样做,他们就不可能是同一个词。
  2. 遍历一个字符串并保留一个计数器变量。您可以使用它for index, letter in enumerate(word):来简化这一点。
  3. 与来自(您可以使用)letter中相同位置的字母进行比较。word2word2[index]
  4. If letteris not a^并且单词中的两个字母不同return False,因为这两个单词不能相同。
  5. 循环结束后,如果您还没有返回,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)
于 2012-10-19T04:47:09.953 回答
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
于 2012-10-19T04:46:50.437 回答
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 
于 2012-10-19T04:47:13.543 回答
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
于 2012-10-19T04:48:45.273 回答