Ошибка атрибута Python: объект ‘str’ не имеет атрибута ‘pop’ Learnpythonthehardway

#python #string #list #attributes #attributeerror

#python #строка #Список #атрибуты #ошибка атрибута

Вопрос:

У меня постоянная проблема с этой ошибкой, которую я пытался решить, поскольку в руководстве мне сказано исправить этот код. Большая часть кода содержит орфографические и математические ошибки, однако я не могу устранить эту ошибку атрибута.

Сайт учебника:https://learnpythonthehardway.org/book/exercise26.txt

Вот ошибка обратной трассировки: обратная трассировка (последний вызов последним):

Файл «C:Python34ex26.py «, строка 74, в print_first_word (предложение) Файл «C:Python34ex26.py «, строка 10, в print_first_word word = words.pop(0)

Ошибка атрибута: объект ‘str’ не имеет атрибута ‘pop’

Мой код, который я должен был исправить в учебном коде в качестве теста:

 def break_words(stuff):
    words = stuff.split(' ')
    return words

def sort_words(words):
    return sorted(words)

def print_first_word(words):
    word = words.pop(0)
    print(words)

def print_last_word(words):
    word = words.pop(-1)
    print(word)

def sort_sentence(sentence):
    words = break_wrods(sentence)
    return sort_words

def print_first_and_last(sentence):
    words = break_words(sentence)
    print_first_word(words)
    print_last_word(words)
    return words

def print_first_and_last_sorted(sentence):
    words = sort_sentence(sentence)
    print_first_word(words)
    print_last_word(words)
    return words

print("Let's practice everything.")
print("You'd need to know ' bout escapes with \ that do n newlines and t tabs.")

poem = """
tThe lovely world with logic
cannot discern n the needs of love
nor comprehend passion from intuition
and requires an explaination
ntwhere there is none.
"""

print("-" * 10)
print(poem)
print("-" * 10)

five = 10 - 2   3 - 5
print("This should be five: %s " % five)

def secret_formula(started):
    jelly_beans = started * 100
    jars = jelly_beans / 1000
    crates = jars / 100
    return jelly_beans, jars, crates

start_point = 10000

beans, jars, crates = secret_formula(start_point)

print("With a starting point of: %d " % start_point)
print("We'd have %d jeans, %d jars, and %d crates." % (beans,jars,crates))

start_point = start_point / 10

print("We can also do that this way: ")
print("We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point))

sentence = "All goodtthings come to those who wait."

words = sentence.split()
sorted_words = sort_words(sentence)

print_first_word(sentence)
print_last_word(sentence)
print_first_word(sorted_words)
print_last_word(sorted_words)
sorted_words = sort_sentence(sentence)
print(sorted_words)

print_first_and_last(sentence)
print_first_and_last_sorted(sentence)
  

Ответ №1:

Здесь вы передаете строку:

 sentence = "All goodtthings come to those who wait."
# ...
print_first_word(sentence)
  

Вы должны передавать список; предположительно, вы хотели передать words вместо этого; это список (результат str.split() вызова):

 words = sentence.split()
  

Комментарии:

1. Спасибо, я по незнанию допустил ошибку, и ваше объяснение идеально. Я новичок в stack overflow, поэтому для меня большая честь решить эту небольшую проблему.

Ответ №2:

Используйте это:

 print_first_word(words)
  

вместо этого:

 print_first_word(sentence)