sentence = input("Say a sentence: ").split()
vowels = 'aeiouAEIOU'
for i in sentence:
if i.isalpha() == True:
if i[0] in vowels:
print(i + "way")
new = i + "way"
sentence.replace(i, new)
else:
print(i[1:] + i[0] + "ay")
new = i[1:] + i[0] + "ay"
sentence.replace(i, new)
else:
print(i)
print(sentence)
我正在尝试制作一个明胶句子转换器,我已经能够使转换器打印出正确的翻译值,但我不能让程序改变列表的实际值,我需要它这样做我可以像“我喜欢兔子”这样的字符串格式打印转换后的文本,就像原始文本一样,而不是像以下列表:
我想知道如何使用replace()函数来更改for循环和if语句中的列表。如果有另一种更好的方式会更好。 谢谢。
答案 0 :(得分:2)
sentence.replace(i, new)
函数返回新字符串 - 它不会就地替换(在原始字符串上)。
您希望循环索引以轻松修改正在迭代的列表(您在开车时不会改变您的车轮,是吗?):
sentence = input("Say a sentence: ").split()
vowels = 'aeiouAEIOU'
for idx in range(len(sentence)):
to_replace = sentence[idx]
if to_replace.isalpha() == True:
if to_replace[0] in vowels:
print(to_replace + "way")
new = i + "way"
else:
print(to_replace[1:] + to_replace[0] + "ay")
new = to_replace[1:] + to_replace[0] + "ay"
sentence[idx] = new
else:
print(to_replace)
print(sentence)
您真的不需要致电replace()
(这是string
方法,而不是list
。您可以改为分配给sentence[idx]
。
答案 1 :(得分:0)
您的list
没有.replace
方法,但str
中的list
有。
在迭代项目时,您似乎想要修改list
。
sentence = input("Say a sentence: ").split()
vowels = 'aeiouAEIOU'
for idx, word in enumerate(sentence):
if word.isalpha() == True:
if word[0] in vowels:
print(word + "way")
new = word + "way"
else:
print(word[1:] + word[0] + "ay")
new = word[1:] + word[0] + "ay"
sentence[idx] = new
else:
print(word)
print(sentence)
enumerate
内置函数在迭代和修改项目时特别有用。