这是我应该做的: 当您用感叹号替换字母“ i”时,单词会更有趣!
编写一个程序,要求用户输入一个字符串,然后在我用感叹号替换的每个小写字母中打印相同的字符串。您的程序应:
将初始字符串转换为列表
使用for
循环逐个元素浏览列表
每当您看到小写字母i时,请将其替换为列表中的感叹号
for
循环完成后,打印列表的字符串化版本
程序运行示例如下所示:
Enter text: I like music.
I l!ke mus!c.
这是我现在的代码:
my_string = input("Enter text: ")
my_list = list(my_string)
for item in my_list:
if item == "i":
print "!"
my_list.remove("i")
print item
(" ").join(my_list)
我的代码的问题在于,它不是将i
替换为!
,而是添加了!
,保留了i
并删除了{{1}之后的字母}。如何修复我的代码?
答案 0 :(得分:4)
您可能想利用query = Bookmark.objects.filter(user_id=user.id).order_by('-created_at')
for item in query:
item.post
来更改列表项:
enumerate()
通常最好不要在迭代过程中删除列表项,但是这种方法可以跟踪我们所处的项,我们可以使用列表索引my_string = list(input('Enter string: '))
for i, char in enumerate(my_string):
if char == 'i':
my_string[i] == '!'
print(''.join(my_string))
对其进行编辑。
更好的是,使用列表理解和三元if语句:
i
答案 1 :(得分:3)
输入if子句不会阻止打印'i'。
想象一下方案=='i'的情况。它将匹配if子句并继续打印'!'并从my_list中删除“ i”。然而。项目仍为“ i”,并将按打印项目进行打印
您可以修改代码以仅在非i时打印项目。
my_string = input("Enter text: ")
my_list = list(my_string)
for item in my_list:
if item == "i":
print "!"
my_list.remove("i")
else:
print item
(" ").join(my_list)
更好的是,如果不需要为后代保存my_list,则甚至不需要从my_list中删除“ i”字符。这样一来,您可能没有下面几行。
my_list.remove("i")
和
(" ").join(my_list)