用“' hello”这个词替换每一个单词。使用功能

时间:2017-11-02 22:24:05

标签: python list function str-replace find-occurrences

我是python和编程的新手。我完成了一项任务,要求提出以下问题:

创建一个自己的函数,它接受一个句子并用“Hello”

替换每一个单词

我的方法是将句子分成奇数和偶数单词列表,然后打印奇数列表,并在其后面加上单词hello。

我尝试了这一点,我所能做的就是将每一个字符分开而不是每隔一个字。

对我的代码有任何想法或建议。

def replace(sentence):

    l = list(sentence)

    list_even = list()

    list_odd = list()

    index = 0

    for word in l:
        if index % 2 != 0:
            list_even.append(word)
        else:
            list_odd.append(word)
        index += 1

    string_odd = "hello".join(list_odd)

    print(string_odd)

5 个答案:

答案 0 :(得分:2)

使用列表理解:

enumerate()

这里的关键是使用%函数和模运算符(Python)。

<小时/> 正如@darksky在评论部分指出的那样,在尝试学习lst = [] for idx, word in enumerate(string.split()): if idx % 2 == 0: lst.append(word) lst.append("hello") words = " ".join(lst) print(words) 时可能很难掌握。相反,你可以很好地使用更长的功能,如

{{1}}

其打印完全相同。

答案 1 :(得分:2)

虽然Jan的答案很漂亮,而且应该使用,但这里有一个使用您尝试的相同方法的例子。

def replace(sentence):

    l = sentence.split(' ')

    list_odd = l[0::2]
    print(list_odd)
    final_list = []

    for word in list_odd:
        final_list.append(word)
        final_list.append('hello')

    final_string = " ".join(final_list)

    print(final_string)
replace("I want to replace every other word in this string with hello")

答案 2 :(得分:1)

您可能会发现这更容易理解。您只需创建一个新的句子对象并用文字填充它。

sentence = "Im new to python and programming."
new_sentence = ""

index = 0

for word in sentence.split():

    if index % 2 == 1:
        new_sentence += "hello "
    else:
        new_sentence += word + " "

    index += 1

# remove the last space at the end
sentence = sentence[:-1]

print(new_sentence)

答案 3 :(得分:1)

def sentenceReplace(sentence):
    sentence_list = sentence.split()
    for counter, word in enumerate(sentence_list):
        if counter % 2 == 0:
            sentence_list[counter] = "Hello"
    new_sentence = " ".join(sentence_list)   
    print(new_sentence)

sentenceReplace(input("Say Something here!"))

接受这句话。使用split方法创建列表。然后使用枚举创建一个计数器循环遍历列表。

如果计数器的其余部分(从枚举生成)为0,则替换该索引处的单词。

您需要在该功能之后再次加入列表并将其打印出来

答案 4 :(得分:0)

两个简单的更改将保存您给定的代码。首先,您想要单步执行输入句子的单词,而不是单个元素(字符)。删除行l = list(sentence),因为这会将您的输入划分为字符。相反,split空格列表(默认值)。

   for word in sentence.split():

这将为您提供如下输出:

Thishellogivehellooutput

现在,只需在join命令中添加空格:

    string_odd = " hello ".join(list_odd)

获得:

This hello give hello output

现在,你还有一个问题:你错过了决赛&#34;你好&#34;对于具有偶数个单词的句子。我将让您处理这个问题,因为您已经知道如何使用模数命令。您可能希望使用

恢复原始输入保存
l = sentence.split()
for word in l:

另请注意,您可以完全删除list_even;因为你从不使用它,所以你会浪费精力。你可以忽略这些词。