2017-09-08 56 views
0

列表改写项比方说,我有一个列表:基于输入指数

lst = [1,2,3,4] 

和我提示用户输入索引和项目。然后程序将查找列表中的索引位置,并用列表中的元素替换用户输入项。例如:

enter index: 2 
enter item to replace: 5 

输出将是:

[1,2,5,4] 

这是我已经试过:

lst = [1,2,3,4] 

index = int(input("Enter index: ")) 
item = int(input("Enter item to replace: ")) 

i = 0 
n = len(lst) 
while i<n: 
    if i == index: 
     lst[i] = item 
    else: 
     i+=1 
print(lst) 

我不知道为什么它不打印出任何东西,我很确定逻辑是写的,但我猜我的问题是在while循环内?

+3

为什么要使用循环?当你可以做'lst [index] = item' –

+0

你的while循环被困住了,因为当i ==索引时你永远不会增加i ..所以一旦它到达并替换了索引,它就会被困在while循环中 – AK47

+0

如果你只是想替换@Moses的解决方案的值是正确的。但请记住,如果您想要在索引4处添加一个新值(在列表末尾插入第五项),则失败。然后你需要append方法。 – Igle

回答

1

while循环永远不会终止,因为那里是从来没有为i值完成后i == index任何增量 - 因此while循环被被困在一个无限循环,它永远不会到达节目结束时打印出清单

lst = [1,2,3,4] 

index = int(input("Enter index: ")) 
item = int(input("Enter item to replace: ")) 

i = 0 
n = len(lst) 
while i<n: 
    if i == index: 
     lst[i] = item 
    i+=1 
print(lst) 
2

正如指出的@MosesKoledoye你可以用简单的indexing

lst = [1,2,3,4] 

index = int(input("Enter index: ")) 
item = int(input("Enter item to replace: ")) 

lst[index] = item 

Enter index: 2 

Enter item to replace: 5 

print(lst) 
[1, 2, 5, 4] 

记住名单0索引。如果你想使用1索引列表,只需使用lst[index + 1] = item

+0

'lst [index] = 3' for'index'数字不是一个分片,它是一个简单的赋值。切片意味着同时索引更多元素 – GPhilo

+0

@GPhilo谢谢,更正。虽然在技术上,不是['切片(停止)'](https://docs.python.org/3/library/functions.html#slice)一个有效的切片?这一点总是让我困惑。 –