我是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)
答案 0 :(得分:2)
使用列表理解:
enumerate()
这里的关键是使用%
函数和模运算符(Python
)。
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
现在,你还有一个问题:你错过了决赛"你好"对于具有偶数个单词的句子。我将让您处理这个问题,因为您已经知道如何使用模数命令。您可能希望使用
恢复原始输入保存l = sentence.split()
for word in l:
另请注意,您可以完全删除list_even
;因为你从不使用它,所以你会浪费精力。你可以忽略这些词。