我正在尝试创建一个新词,同时比较两个字符串的字符,其中有以下标准。
有两个长度相等的字符串S和T
1.如果S处的字符等于T处的字符,则“B”将添加到名为“wordle”的新空字符串中
1.如果S和T的字符不同,那么“G”将被添加到wordle中。例如,s= ABCDE和T = EDCBA将给予wordle =BBGBB。下面是我的代码。
class Solution(object):
def guess_game(self, s1, s2):
dt = dict()
wordle = ''
if len(s1) == len(s2):
for i in range(len(s1)):
dt = {s1[i]: s2[i]}
if dt.keys() == dt.values():
wordle[i] += 'G'
else:
wordle[i] += 'B'
return wordle
else:
print("The strings should be equal length")
if __name__ == "__main__":
s1 = 'ABCDE'
s2 = 'EDCBA'
print(Solution().guess_game(s1, s2))
我收到以下错误。
wordle[i] += 'B'
IndexError: string index out of range
2条答案
按热度按时间chhqkbe11#
您可以使用'=='来比较它们并填充wrodle。
出现wordle [i]+='B'索引错误的原因:字符串索引超出范围是因为您试图在索引创建之前访问它
1mrurvl12#
出现
IndexError
的原因是,例如,在第一次迭代(i=0
)中,您试图访问wordle[0]
,但wordle是一个空字符串,因此它在0
处没有元素。您所要做的只是在字符串后面附加一个字母,因此您只需要编写:
(or
else
部件中的+ B
)我也真的不明白为什么你要创建一个字典,然后比较
keys
和values
,当你可以直接看到s1[i]==s2[i]
。请尝试以下操作:
输出
BBGBB
。因为
dt.keys()
和dt.values()
具有不同的类型(分别为dict_keys
和dict_values
),所以原始代码中字典键和值的比较失败。它没有!)。如果你需要比较字典的键和值(这不是一个常见的需求),你可以在比较之前把它们都转换成列表,如下面的代码所示,我们可以看到对于一个键和值明显相同的字典,
my_dict.keys() == my_dict.values()
是False
,但是list(my_dict.keys()) == list(my_dict.values())
是True
。输出: