gpt4 book ai didi

python - 猜测字符串中正确的字符和位置

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:51 33 4
gpt4 key购买 nike

我是编码的新手,我正在为我的第一个代码而苦苦挣扎。

我想创建一个猜词游戏,让用户一次猜测几个字母的字符和位置。我坚持的步骤可以总结为:

  1. 猜测并输入选定的单词;
  2. 检查两个字母的猜测是否在所选单词的前 2 个字符中(每个正确的字母 +10 分);和
  3. 检查两个字母的猜测是否在所选单词的正确位置(每个正确字母+50 分)。

我似乎无法找到一种方法来做到这一点。这是我到目前为止所拥有的。我想自己继续剩下的代码,但是,如果我不能通过第一步,那将是非常困难的!

def compute_score(guess,position,word):
""" Doc string """

score = 0
right_position_value = 100
wrong_position_value = 20
guess = input()
position = pos for char in guess
word_position = pos for char in word

for char in word:
if char in guess:
score += 10
if position == word_position:
score += 50
else:
score += 0

return score

guess_1 = input('guess the first 2 letters corresponding to letters 1 and2 of the unkown word!: ')
print('Your guess and score were: ', guess, score)

最佳答案

您比您想象的更接近完成第 1 步。您已经有了输入猜测的代码,现在您只需要执行相同的操作来输入所选单词。不过,您可能想要更改输入消息:

word = input('Choose your unknown word: ')
guess = input('guess the first 2 letters corresponding to letters 1 and2 of the unkown word!: ')

这就是第 1 步!

第 2 步和第 3 步需要更多工作,因为您的 compute_score 函数存在一些问题。第一个问题是您立即覆盖了您传入的一些参数的值:

def compute_score(guess,position,word):
""" Doc string """

score = 0
right_position_value = 100
wrong_position_value = 20
guess = input() <-- This will prompt the user for input a third time, and then
overwrite their initial guess with this one.
position = pos for char in guess <-- Same problem here
word_position = pos for char in word

如果您甚至在使用这些变量之前就重新分配它们,那么首先就没有必要将它们作为函数的参数。但即使你修复了这个问题,你仍然会得到一个错误:

word_position = pos for char in word

我明白你想做什么,但如果你要在下面的 for 循环中遍历单词的每个字母,你最好只计算循环中的每个字母也是如此。您可以在 for 循环中使用一个巧妙的小技巧来做到这一点:

for idx, char in enumerate(word):

这不仅为您提供了单词的每个字母 (char),还为您提供了循环的迭代次数 (idx)。例如:

>>> word = 'shape'
>>> for idx, char in enumerate(word):
... print(idx)
...
0
1
2
3
4

您可以使用此迭代计数值作为字母的位置,希望这能帮助您弄清楚第 3 步(诚然,我仍然不太确定 position 参数的用途或位置猜测规则起作用)

对于第 2 步,您也非常接近。目前您正在检查两个字母的猜测是否在所选单词中的任何地方。要只检查前 2 个字母,您可以使用单词的子字符串。在 Python 中,这是通过在检查期间“切片”除了单词的前 2 个字母之外的所有字母来完成的:

for char in word:
if char in guess[:2]:
score += 10

然后开始吧。

但是,我只是想让您知道您的代码中还有一些其他问题,主要问题是最后一个中的 guessscore 变量line 没有在任何地方定义,并且您实际上从未调用过 compute_score 函数。在你的最后一行,你应该这样调用它:

word = input('Choose your unknown word: ')
guess = input('guess the first 2 letters corresponding to letters 1 and2 of the unkown word!: ')

print('Your guess and score were: ', guess, calculate_score(guess, 0, word))

在示例中,我刚刚将 0 作为 position 传递,因为我仍然不知道游戏的位置规则。不过,如果您提供更详细的解释,我可以对此进行编辑。

关于python - 猜测字符串中正确的字符和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611982/

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