2016-10-08 2 views
0

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

class firstClass: 
    def test(self): 
     enter = raw_input() 
     books = enter.split() 
     books = [] 
     for index in range(len(books)): 
     print 'Current Books :', books[index] 

mybooks = firstClass() 
mybooks.test() 

Моя конечная цель иметь ситуацию, когда вхожу book1, book2book3 и так далее, я получаю результат, как так (я не хочу, чтобы ограничить его только три книги)

Current Books, book1 
Current Books, book2 
Current Books, book3 
+1

В чем смысл 'books = []'? – arshajii

+0

В чем смысл 'range (len (...))'? –

ответ

2

Вы правильно устанавливаете books с линией books = enter.split(). Следующая строка books = []перезаписывает это значение с пустым массивом, поэтому цикл никогда не происходит.

Удаление, что одна линия, она работает, как ожидалось:

>>> class firstClass: 
... def test(self): 
...  enter = raw_input() 
...  books = enter.split() 
...  for index in range(len(books)): 
...   print 'Current Books :', books[index] 
... 
>>> mybooks = firstClass() 
>>> mybooks.test() 
book1 book2 book3 
Current Books : book1 
Current Books : book2 
Current Books : book3 

Как вы, наверное, знаете, split() без каких-либо аргументов разделится на пробельных, так что это предполагает, что вход вводится с пробелами между ними. Вам нужно будет указать другой разделитель (например, запятую), если это так.

Как еще одно примечание, index for range(len(arr)) - это анти-шаблон в Python, которого почти всегда следует избегать. Вы цикл можно переписать следующим образом для удобства чтения:

for book in books: 
    print 'Current Books :', book 
+0

Спасибо, Брайан. Я думал, что для записи записей в список требуется строка 'books = []'. Виноват. – jebjeb

+0

Split возвращает список, так что это необязательно. Вы могли бы сделать это раньше, чем – brianpck

0

Просто удалите 5-й линии, ваш код будет работать нормально.

class firstClass: 
    def test(self): 
     enter = raw_input() 
     books = enter.split() 
     for index in range(len(books)): 
     print 'Current Books :', books[index] 

mybooks = firstClass() 
mybooks.test() 
Смежные вопросы