2016-02-02 4 views
1

Это может быть очень простая ошибка, но я не знаю, где моя ошибка. У меня этот код, я пытаюсь удалить слот из массива, поскольку пользователь уже выбирает слот. но это не сработает. может ли кто-нибудь помочь?Невозможно удалить значение из массива в Python

slot = ['8 AM', '9 AM', '10 AM', '11 AM' , '12 AM' , '2 PM', '3 PM', '4 PM'] 
print "slot available:" , slot 
print 'Choose your slot' 
slotchoose = raw_input ("choose:") 
if slotchoose == '8 AM' : 
    slot.remove ('8 AM ') 
else : 
    if slotchoose == '9 AM' : 
     slot.remove ('9 AM') 
    else : 
     if slotchoose == '10 AM' : 
      slot.remove ('10 AM') 
     else : 
      if slotchoose == '11 AM': 
       slot.remove ('11 AM') 
      else: 
       if slotchoose == '12 AM': 
        slot.remove ('12 AM') 
       else : 
        if slotchoose == '2 PM' : 
         slot.remove ('2 PM') 
        else : 
         if slotchoose == '3 PM': 
          slot.remove ('3 PM') 
         else : 
          if slotchoose == '4 PM' : 
           slot.remove ('4 PM') 

print "Slot aavail :" , slot 

здесь пример вывода:

slot available: ['8 AM', '9 AM', '10 AM', '11 AM', '12 AM', '2 PM', '3 PM', '4 PM'] 
Choose your slot 
choose:8 AM 
Slot aavail : ['8 AM', '9 AM', '10 AM', '11 AM', '12 AM', '2 PM', '3 PM', '4  PM'] 

"8 AM" не должно быть

+2

вы знаете о Do 'elif'? –

+0

Если вы работаете только с небольшими массивами, вы можете поместить материал, который вы не выбрали в массиве temp, и заменить первый. И, как сказал tobias, 'elif' будет лучше, чем много' if else' – Morb

+1

Кроме того, знаете ли вы, что весь этот код можно эффективно заменить на 'if slotchoose in (некоторые допустимые значения): slot.remove (slotchoose) '? –

ответ

1

заменить slot.remove ('8 AM ') с

slot.remove ('8 AM') 

вы можете сделать ваш код вещий:

slot = ['8 AM', '9 AM', '10 AM', '11 AM' , '12 AM' , '2 PM', '3 PM', '4 PM'] 
print "slot available:" , slot 
print 'Choose your slot' 
slotchoose = raw_input ("choose:") 
if slothchoose in slot: 
    slot.remove(slothchoose) 
print "Slot aavail :" , slot 
2

Это действительно простая ошибка: вы кладете дополнительное пространство.

slot.remove ('8 AM ') 

должно быть:

slot.remove ('8 AM') 
+3

Ошибка была бы устранена, если бы он использовал 'slot.remove (slotchoose)'. И тогда получилось бы, что все if/elses были одинаковыми и могли быть удалены :-) – RemcoGerlich

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