gpt4 book ai didi

python - 主脑号码位置值

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:37 24 4
gpt4 key购买 nike

我正在创建一个 Master Mind 程序,用户应该猜测一个 4 位数字,其中所有数字都必须不同。如果用户猜测的数字在数字中但不在正确的位置,则显示为“F”,如果位于正确的位置,则显示为“R”。我的代码的问题是,如果用户的猜测包含 2 个或更多相同的数字,并且第一个数字位于错误的位置,但第二个数字位于正确的位置,它会显示“F”,但它应该显示“R”。你能帮我找到解决这个问题的方法吗?

value = ""
tmp = [False]*4
for i in range(4):
for j in range(4):
if userAnswer[i] == computerNumber[j]:
if i==j and tmp[j]!= True:
tmp[j] = True
value += "R"
elif tmp[j] != True:
tmp[j] = True
value += "F"
break
return value

最佳答案

你可以试试这个:

def guess(user_answer, true_number):
right_position = [(user_answer[i] == true_number[i]) for i in range(4)]
right_number = [(not right_position[i] and (user_answer[i] in true_number)) for i in range(4)]
return 'R' * right_position.count(True) + 'F' * right_number.count(True)

已编辑:我不太确定您到底需要什么输出。如果您希望在完全匹配时只有“R”(没有“F”),您可能会发现此方法有效:

def guess(user_answer, true_number):
right_position = [(user_answer[i] == true_number[i]) for i in range(4)]
if any(right_position):
return 'R' * right_position.count(True)
right_number = [(user_answer[i] in true_number) for i in range(4)]
if any(right_number):
return 'F' * right_number.count(True)
return '' # or what else you want to indicate that there's no matching

再次编辑:这次我想我应该明白你的想法了。 :) 那么这将按您的预期工作:

def guess(user_answer, true_number):
right_position = [(user_answer[i] == true_number[i]) for i in range(4)]
if any(right_position):
return 'R'
right_number = [(user_answer[i] in true_number) for i in range(4)]
if any(right_number):
return 'F'
return '' # or what else you want to indicate that there's no matching

关于python - 主脑号码位置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com