我正在用python尝试一个hangman代码。为了匹配一个单词的一个字符,我正在使用索引函数来获取字符的位置。例如:word = 'COMPUTER'
user_input = raw_input('Enter a character :') # say 'T; is given here
if user_input in word:
print "\nThe Character %c is present in the word \n" %user_input
word_dict[word.index(user_input)] = user_input
#so the output will looks like
{0: '_', 1: '_', 2: '_', 3: '_', 4: '_', 5: 'T', 6: '_', 7: '_'}
现在,我的问题来了,当它来与重复的字符。
# Another example
>>> 'CARTOON'.index('O')
4
对于第二个“O”,如何得到它的索引。因为我已经使用了这个“索引”逻辑,我期待着继续这样做。
9条答案
按热度按时间s5a0g9ez1#
根据
str.index
文档,签名如下所示第二个参数是搜索的起始索引,所以你可以传递第一个条目的索引+1,得到下一个索引。
产出
上面的代码可以这样编写
你甚至可以把它作为一个效用函数,就像这样
**注意:**如果至少两次未找到字符串,则将抛出
ValueError
。更普遍的方式是,
aelbi1ox2#
一个可能更像Python的方法是使用生成器,从而避免中间数组'found':
另一种方法是枚举内置
这也使用了发电机。
然后我开始对python的性能差异感到好奇,我使用python已经一年了,所以我才刚刚开始真正了解python,下面是一个快速测试,使用了各种类型的数据:
在我的机器上会产生以下计时结果:
enumerate()方法更具表现力,更像Python。perf差异是否重要取决于实际用例。
uhry853o3#
你已经问过如何找到第二个出现的单词,并且得到了一个很好的答案,概括了任何一个具体的出现。你会意识到你真正想要的是一次找到所有出现的单词。下面是一个方法:
kxkpmulp4#
可以使用字符串的count方法来查找user_input在字符串中出现的次数,然后,对单词中每次出现user_input时使用str.index(sub,start)方法,并每次将start递增1,这样就不会每次都得到相同的索引。
67up9zun5#
如果你使用
filter
,这应该是一个一行程序,因为如果你使用index
,你将被强制迭代或者使用递归,在这种情况下,这两者都没有必要,你可以过滤掉与你相关的值。使用
filter
很容易,下面是一行代码的示例实现:您始终可以添加错误检查,如下所示:
如果在字符串中找不到该字符,则只会得到一个空元组。否则,将得到所有匹配的元素。如果想要通用的东西,那么依赖于字符只有一两个示例这一事实并不是正确的方法。例如:
agyaoht76#
这是另一个例子。
j1dl9f467#
抱歉,如果这个答案的格式不正确,或者我把某个地方搞砸了,因为我是新来的,这是我的第一篇文章。我在我自己的刽子手游戏中使用了下面的代码来获得一个单词中多个重复字母的索引,效果很好。希望一个新手能理解这一点。
希望这对某人有帮助!
niwlg2el8#
tcbh2hod9#