Я работаю через книгу «Automate the Boring Stuff with Python» и застрял в одной из проблем практики. Мое решение работает в оболочке, но не тогда, когда я пытаюсь запустить ее как программу. Вот проблема подсказка:Невозможно получить код в оболочке для работы в качестве программы
Допустим, вы имеете значение списка, как это:
spam = ['apples', 'bananas', 'tofu', 'cats']
Написать функцию, которая принимает значение списка в качестве аргумента и возвращает строку со всеми элементами, разделенных запятая и пробел, с и вставлены до последнего элемента. Например, передача предыдущего списка спама функции вернет «яблоки, бананы, тофу и кошки». Но ваша функция должна иметь возможность работать с любым переданным ей значением списка.
Вот мой код:
def listToString(usersList):
myStr = ', '.join(str(i) for i in usersList[0:-1]) # converts all but last list element to string and joins with commas
myStr = myStr + ' and ' + str(usersList[-1]) # adds on "and", converts final list element to string and adds to myStr
print(myStr)
myList = input()
listToString(myList)
Когда я определить список в оболочке и выполнить приведенные выше шаги на этом, я получаю результат я хочу:
'apples, bananas, tofu and cats'
Но когда Я пытаюсь сгруппировать эти шаги вместе в вышеуказанной программе, результатом которой является:
[, a, p, p, l, e, s, ,, , b, a, n, a, n, a, s, ,, , t, o, f, u, ,, , c, a, t, s and ]
Любые идеи?
Большое спасибо, если вы нашли время, чтобы прочитать это. Есть еще несколько тем по этому же вопросу практики на SO уже (here и here), но я все еще застрял, поэтому пошел и отправил.
Вам необходимо передать 'listToString' фактический список, а не строку. 'input' (в Python 3) _always_ возвращает строку. –
В упражнении не сказано, что вы должны получить список из пользовательского ввода. Просто скопируйте список 'spam' в свой скрипт. –
Для всех людей, говорящих OP, чтобы преобразовать строку, возвращаемую 'input' в список: пожалуйста, прочитайте вопрос! Упражнение должно написать функцию, которая принимает _list_. Вы добавляете ненужное дополнительное осложнение, которое просто не требуется для этого упражнения. –