Python 代码需要为更多的可能性而工作
问题Python 代码需要为更多的可能性而工作,python,Python,问题 is_match: (str, str) -> bool 第一个参数是一个谜题,第二个参数是一个视图。如果视图可能是给定谜题的视图,则返回True 我的答案 我想到了这个: def is_match(puzzle, view): if len(puzzle) != len(view): return False if len(puzzle) == len(view): return True 我也在网上找到了这个: def is_m
is_match:
(str, str) -> bool
第一个参数是一个谜题,第二个参数是一个视图。如果视图可能是给定谜题的视图,则返回True
我的答案
我想到了这个:
def is_match(puzzle, view):
if len(puzzle) != len(view):
return False
if len(puzzle) == len(view):
return True
我也在网上找到了这个:
def is_match(given_puzzle, view):
if len(given_puzzle) != len(view):
return False
unique_letters = set(ch for ch in view if ch != '^')
for (a, b) in zip(given_puzzle, view):
if a in unique_letters and a != b:
return False
return True
我遇到的问题是,如果我输入:
is_match('blah', 'tr^^')
对于给定的两个代码,它都将返回True。这肯定是错误的,因为字符甚至不匹配,只有字符串的长度匹配
我能做些什么来解决这个问题?根据之前关于这个“益智”游戏的一系列问题,我推断您想要的是:
def is_match(puzzle,view):
return all(p == v for p,v in zip(puzzle,view) if v != '^' )
*请注意,这假设puzzle
和view
具有相同的长度
这样做的目的是同时在拼图和视图上迭代,从每个拼图中产生下一个字符,分别为
p
和v
(zip
)的魔力)。我检查以确保v
不是'^'
(占位符字符)。如果它不是占位符,我检查它是否等于p
(来自puzzle
的字符)。如果在任何时候后一项检查失败,则函数返回False
。否则,它将返回True
什么是拼图?就我所知,“tr^^^”是“废话”的一种可能的观点,因为你没有告诉我们任何拼图的规则。你能澄清一下这个拼图是什么吗?我们不必通过你之前的问题来理解你的意思。这基本上是一个刽子手游戏,谜题是任何需要解决的单词,例如“苹果”是需要解决的谜题,给出的视图是“^^^^^”我应该在代码中把它放在哪里?起初还是在最初end@JohNDoe--这是一个不依赖任何全局变量的函数,因此它可以去任何地方(只要python在您尝试实际使用它之前看到它)。@JohNDoe--没问题。我只是要求你在交书之前一定要弄清楚因此,我将其命名为def is_match(拼图,视图):返回all(p==v代表p,如果v!='^')如果len(拼图)!=len(view):如果len(puzzle)==len(view)则返回False:返回True,但问题是当我输入类似is_match('blah','^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^now@JohNDoe--返回(len(拼图)==len(视图))和所有(…)
。这将在检查单个字符之前检查长度。。