最近,我确定了一个可以比较每个词表中两个词的功能。但是,我也发现了一些问题。
def printcorrectletters():
x=0
for letters in correctanswer:
for letters2 in userinput:
if letters == letters2:
x = x+1
break
return x
在此功能中,如果correctanswer ='HUNTING',并且我输入'GHUNTIN',则会显示6个字母是正确的。但是,我希望它比较单词1的字母1.因此,它应该进行为0。例如,'H'将匹配userinput的第一个字母..依此类推。
我还认为可以使用'zip'解决它的另一个功能。但是,我们的TA要求我在没有'zip'之类的情况下完成它。
答案 0 :(得分:0)
如果没有zip
,您可以使用enumerate()
循环遍历correctanswer的元素,并同时获取索引和元素。示例 -
def printcorrectletters():
x=0
for i, letter in enumerate(correctanswer):
if i < len(userinput) and letter == userinput[i]:
x = x+1
return x
或者,如果不允许enumerate()
,则只需使用range()
循环直到len(correctanswer)
并从每个索引中获取元素。
答案 1 :(得分:0)
如果字符串的长度不同,则需要比较较短字符串的每个字母:
shortest_length = min(len(correctanswer), len(userinput))
min
只会为您提供至少两个或更多值。你可以自己编写代码:
def min(a, b):
return a if a < b else b
您可以使用[index]
:
>>> 'Guanfong'[3]
n
所以你可以遍历所有的字母索引:
correct = 0
for index in range(shortest_length):
if correctanswer[index] == userinput[index]:
correct += 1
correct = sum(1 for (correct_char, user_char) in zip(correctanswer, userinput)
if correct_char == user_char)
Python提供了很好的工具来简化想法并与计算机和程序员(包括你自己,明天)进行通信。