为了账号安全,请及时绑定邮箱和手机立即绑定

为什么此列表中的两个字母的索引返回相同?

为什么此列表中的两个字母的索引返回相同?

交互式爱情 2021-10-10 14:01:43
所以我在列表中索引字母。如果我将“h”“e”“l”“l”“o”的字母放在列表中并尝试获取它们的索引,它会返回 0 1 2 2 4。如何获得第二个“l” " 显示为 3?def gameboard():    print("_ " * len(secretword))    for i in secretword:        gameboardindexes.append("_ ")def letterindexes():    for i in secretword:         wordindexes.append(i)def guessLetter():    guess = input("Please enter one letter: ")    for i in wordindexes:        if guess == i:            x = wordindexes.index(i)            print(x)secretword = input("Please enter word:")wordindexes = []gameboardindexes = []wrongletters = []letterindexes()gameboard()guessLetter()
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

使用str.joinstr.rindex

print(''.join(yourList).rindex('l'))

或使用enumerate

print([i for i,v in enumerate(yourList) if v == 'l'][-1])

两个输出:

3


查看完整回答
反对 回复 2021-10-10
?
森林海

TA贡献2011条经验 获得超2个赞

列表索引函数返回第一次出现的索引。解决方法可能是从数组创建一个字符串并使用该rindex()函数。该rindex()函数返回找到子字符串的最后一个索引。


hello = ['h', 'e', 'l', 'l', 'o']

''.join(char for char in hello).rindex('l')

另一种可能性是为列表索引函数提供一个超过第一个找到的索引的起始索引。


hello = ['h', 'e', 'l', 'l', 'o']

hello.index('l', hello.index('l') + 1)


查看完整回答
反对 回复 2021-10-10
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以guessLetter()覆盖任何返回索引的字母:


def guessLetter():

    guess = input("Please enter one letter: ")


    for letter in wordindexes:

        if guess == letter:

            index = wordindexes.index(letter)

            wordindexes[index] = 0

            return index


    return -1  # not found

测试


>>> guessLetter()

Please enter one letter: l

2

>>> guessLetter()

Please enter one letter: l

3

>>> guessLetter()

Please enter one letter: l

-1

>>> 


查看完整回答
反对 回复 2021-10-10
  • 3 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信