Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 代码需要为更多的可能性而工作_Python - Fatal编程技术网

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(视图))和所有(…)
。这将在检查单个字符之前检查长度。。