【问题标题】:In python, how do I find the positions of a word that occurs more than once in a sentence using a for loop?在python中,如何使用for循环找到一个句子中多次出现的单词的位置?
【发布时间】:2016-02-08 20:18:03
【问题描述】:

基本上,我需要制作一个 python 2.7 程序,用户输入一个句子,然后输入一个单词,如果单词在句子中,程序会显示它的位置。如果单词不在句子中,程序需要输出一条错误消息,比如“单词不在句子中”。句子和单词不能区分大小写,程序必须使用 for 循环。我的尝试很糟糕,但这是我尝试过的:

sentence = raw_input("enter your sentence: ")

word = raw_input("enter word: ")

len(sentence)

for i in range(int(sentence)):

    print sentence.find(word)

我的代码输出:

enter your sentence: hello bob my name is bob too
enter word: bob

Traceback (most recent call last):
  File "C:\GCSE Python\CPCA- Task 1 Code.py", line 5, in <module>
    for i in range(int(s1)):
ValueError: invalid literal for int() with base 10: 'hello bob im bob too'
>>> 

【问题讨论】:

  • 您的代码和您的输入与您的错误不符。
  • 您收到的错误消息是因为您正在执行int(sentence)。我认为你的意思是得到长度,这意味着你想要len(sentence)。但这仅涵盖您遇到的错误。除此之外,还有其他问题。但有人刚刚回答。

标签: python string python-2.7 for-loop substring


【解决方案1】:

你可以这样做:

>>> s='hello bob my name is bob too'
>>> ss='bob'
>>> [i for i in range(len(s)) if s.startswith(ss, i)]
[6, 21]

或者,作为for 循环:

for i in range(len(s)):
    if s.startswith(ss, i):
        print i

或者,稍微好一点,因为您不会在 Python 2 中创建无用的 range 列表:

for i, _ in enumerate(s):
    if s.startswith(ss, i):
        print i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-26
    • 2017-06-22
    • 1970-01-01
    • 2017-02-19
    • 2014-02-03
    • 2019-04-21
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多