为什么我得到这种输出?

Why I'm getting this kind of output?

我在桌面上 运行 这段代码,然后输入 watermelon 和代码 运行 好的,但是它将西瓜一个字母一个字母地拆分

fruits = ['apple','pine','grape','mango','orange']
fruits[1:3] = input('Enter a fruit:')
print(fruits)

输出:

Enter a fruit: watermelon 
['apple','w','a','t','e','r','m','e','l','o','n','mango',orange']

预期输出:

['apple','watermelon','mango','orange']

明确地将您的输入转换为列表,然后分配给您的原始列表。

根据 Barmar 的评论,尝试此代码。

fruits = ['apple','pine','grape','mango','orange']
fruits[1:3] = [input('Enter a fruit:')]
print(fruits)

它将有效地替换数组中的第二个和第三个元素(我假设你想要实现的)

由于您正在进行切片分配,源将被视为一个序列。切片 [1:3] 将分别替换为源序列的每个元素。

当字符串用作序列时,每个字符都是一个单独的元素,因此它被拆分并插入到列表中。

如果要用整个字符串替换切片,请将其包装在列表中。

fruits[1:3] = [input('Enter a fruit:')]

正如评论所述,当执行 fruits[1:3] 时,您正在创建一个切片赋值,它将输入的单词切片并将其存储在 1 和 2 索引中(不包括 3)。

如果您只是想在水果数组中添加另一个水果,

fruits = ['apple','pine','grape','mango','orange']
fruit = input('Enter a fruit: ')
fruits.append(fruit)
print(fruits)

或者,如果你真的想替换第 2 和第 3 个地方,你可以这样做,

fruits = ['apple','pine','grape','mango','orange']
fruits[1:3] = [input('Enter a fruit: ')]
print(fruits)

这将产生, ['apple', 'watermelon', 'mango', 'orange']