我的CodeHS 8.3.7代码:Exlamat!on Po!nts有什么问题?

时间:2019-04-25 16:17:53

标签: python

这是我应该做的: 当您用感叹号替换字母“ 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}之后的字母}。如何修复我的代码?

2 个答案:

答案 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)