2016-10-21 2 views
1

Совершенно новый для Python, так что несите меня.Замена дублирующего элемента в списке через raw_input

Я создал список с помощью raw_input:

itemList = [] 
num = int (raw_input("Enter a number: ")) 
for i in range (num): 
    listStr = raw_input("Enter an item: ") 
    itemList.append (listStr) 

Теперь я должен проверить, если какой-либо элемент уже существует, и если это попросить другого raw_input добавить в список. Я полностью в тупике. Это не связано с этим; он просто печатает в любом случае. Я также должен добавить новый элемент в исходный список. Тупик.

itemList = [] 
num = int (raw_input("Enter a number: ")) 
for i in range (num): 
    listStr = raw_input("Enter an item: ") 
    itemList.append (listStr) 
for a in itemList: 
    if a in itemList : 
     a = raw_input("Enter another number: ") 
+0

Вы сравниваете строки и Интс, так что это: 'listStr = INT (raw_input (" Ввести item: "))' – sisanared

+0

Вы хотите проверить, существует ли элемент в списке? и если да, попросите добавить другой элемент? –

+0

listStr должен быть строкой. Количество элементов в списке должно соответствовать int, введенному в num. – MrBloodDoll

ответ

0

Вы можете использовать while цикл, чтобы просить для ввода, пока элемент не будет введен, который уже не в списке. Это можно было бы улучшить, но это должно вам начать работу:

itemList = [] 
num = int (raw_input("Enter a number: ")) 

for i in range (num): 

    while True: 
     listStr = raw_input("Enter an item: ") 
     if listStr in itemList: 
      print('That item is already in the list') 
     else: 
      itemList.append(listStr) 
      break 

Немного лучше версия:

itemList = [] 
num = int(raw_input("Enter a number: ")) 

for i in range(num): 

    listStr = raw_input("Enter an item: ") 

    while listStr in itemList: 
     print("That item already exists") 
     listStr = raw_input("Enter another number: ") 

    itemList.append(listStr) 
+0

Это сработало отлично! Спасибо! – MrBloodDoll

-1

Вот слегка измененная версия кода

itemList = [] 
num = int (raw_input("Enter a number: ")) 
for i in range (num): 
    listStr = raw_input("Enter an item: ") 
    itemList.append (listStr) 
for idx in range(len(itemList)): 
    # using a while ensures that if the value newly entered 
    # is again present in the list, it again prompts for an input 
    while itemList[idx] in itemList[:idx] or itemList[idx] in itemList[idx+1:] : 
     a = raw_input("Enter a replacement for item {0}: ".format(itemList[idx])) 
     itemList[idx] = a 
+0

Это может быть непросто читать для новичков –

+0

'a = raw_input (« Введите другой номер: »)' не собирается делать то, что он просит ... add 'int' –

+0

@StamKaly Я думал, что строковые входы приемлемы слишком. –

Смежные вопросы