Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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/6/ant/2.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,def计算分数(猜测、位置、单词) 我想找到一种方法,将猜测中的每个字符与给定单词中相同位置的每个字符进行匹配,并给出+100的分数 因此,对于EG1-->a,两个字都在同一位置,但对于EG2-->a,两个字都在同一位置,但位置不同。选中字符后,将其放入单独的变量“checked”中 # Then I want to check just characters that are the same in each word checked = 'a' for c in guess and not

def计算分数(猜测、位置、单词)

我想找到一种方法,将猜测中的每个字符与给定单词中相同位置的每个字符进行匹配,并给出+100的分数 因此,对于EG1-->a,两个字都在同一位置,但对于EG2-->a,两个字都在同一位置,但位置不同。选中字符后,将其放入单独的变量“checked”中

# Then I want to check just characters that are the same in each word
checked = 'a'
for c in guess and not in checked:
    if c in word:
    score = score + 20

我不知道如何执行第一部分-->检查字符是否相同且位置相同。

如果将两个字符串压缩在一起,则会得到字符对:

>>> zip("ABC", "aBCde")
[('A', 'a'), ('B', 'B'), ('C', 'C')]
较长单词中的字符可以方便地丢弃。现在,您的问题是检查一对中的两个字符是否相同:

score = 0
for first, last in zip(word, guess):
    if first == last:
        score += 20
如果您想在单个表达式中计算分数,您可以使用
True==1
False==0
这一事实,并对理解进行求和:

score = 20*sum(first==last for (first, last) in zip(word, guess))

但这对某些人来说太过分了,可能会让初学者感到困惑。

你可以使用
enumerate()
在迭代时检查索引,因为它返回索引/字符元组列表,
enumerate('test')
将返回
[(0,'t'),(1,'e'),(2,'s'),(3,'t')]
。因此,您可以执行以下操作:

for i, c in enumerate(guess):
    if c not in checked:
        if word[i] == c:
            score += 20
        checked += c

谢谢这很有帮助。还有一点不相关,但是我如何才能在一个单词中添加“下划线”,使整个单词输出始终为6个字母。因此,如果在位置0的猜测是“an”,我希望输出是位置1的“an”或“an”,我希望输出是“an”
word+=(6-len(word))*“
应该这样做。
for i, c in enumerate(guess):
    if c not in checked:
        if word[i] == c:
            score += 20
        checked += c