2016-11-03 3 views
-3

В настоящее время я пытаюсь запрограммировать код на питоне, который ответит вам, если ваш ответ на него приведен в списке возможных ответов. Пример программы ниже .Ошибка Python: «Объект списка не имеет атрибута» .upper «

def responce(): 
    greetings = ["Hello","Hi","Nice to see you!","Greetings","How's it going?","How are you doing?","What's new?","How's your day going?","Hey!"] 
    print("\n") 
    reply = input(": ") 
    lenrep = len(reply) 
    tempstore = [] 
    for i in range(0,lenrep): 
     tempstore.append(i) 
     z = 0 
     while z < 9: 
      tempgreet = greetings[z] 
      if tempstore.upper() == tempgreet.upper(): 
       reply = "" 
       tempstore = [] 
       temprandno = random.randint(0,2) 
       addon = ["what do you want to know?", "what do you want to talk about?", " "] 
       addontext = addon[temprandno] 
       text(greet(), + " " + addontext) 
       z += 1 
     if i == " ": 
      tempstore = [] 

Теперь мой вопрос, почему он пришел с ошибкой

AttributeError: list object has no attribute 'upper' 

и есть способ, чтобы исправить мою программу, чтобы заставить его работать?

Спасибо за любого

+0

'tempstore' - это список и не имеет метода' upper() '. Вы хотели найти слово в списке? – MooingRawr

+0

Поскольку в списке нет метода 'upper()': 'tempstore' - этот список. Поскольку это список целых чисел, непонятно, что вы хотите прописными буквами. – Evert

+0

Да, я действительно хотел найти слово в списке MooingRawr –

ответ

2

Советы:

greetingsInUpCases = [elem.upper() for elem in greetings ] 

преобразует все строки в списке приветствия заглавными буквами, и выражение

reply.upper() in greetingsInUpCases 

позволяют решить, если replyнаходится в текущем списке. Вы можете использовать его в заявлении if:

if reply.upper() in greetingsInUpCases: 
+0

Спасибо, это помогло исправить его, оно, наконец, работает, имеет преимущество, но не отображается из-за моей репутации. –

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