回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>下面的代码</p>
<p>部分是<code>('frodo', 'fradi'), ('frodo', 'crodo'), ('frodo', 'abc123'), ('frodo', 'abc123'), ('frodo', 'frodoc'), ('fradi', 'crodo'), ('fradi', 'abc123'), ('fradi', 'abc123'), ('fradi', 'frodoc'), ('crodo', 'abc123')</code>之一</p>
<p>班努集团是<code>["fr*d*", "abc1**"]</code></p>
<p>函数解决方案检查部件[i]是否可以是ban_组[i]</p>
<p>我所期望的是</p>
<p>当part为('frodo','fradi')时,part[0]可以是ban_组[0],part[1]不能是ban_组[1]。所以这是假的</p>
<p>当部件为('frodo','abc123')时,部件[0]可以是ban_组[0],部件[1]可以是ban_组[1]。所以这是真的,所以在候选名单中添加部分</p>
<p>但它没有像我预期的那样工作。我真的不明白问题出在哪里</p>
<p>你能帮我吗</p>
<pre><code>from itertools import combinations
def check_id(user, ban):
for i in range(len(ban)):
if ban[i] == '*':
continue
elif user[i] != ban[i]:
return False
return True
candidates = []
def solution(user_group, ban_group):
for part in combinations(user_group, len(ban_group)):
for i in range(len(part)):
if check_id(part[i], ban_group[i]) is True:
candidates.append(part)
return candidates
print(solution(["frodo", "fradi", "crodo", "abc123", "frodoc"], ["fr*d*", "abc1**"]))
</code></pre>