在方法

时间:2016-10-08 14:42:05

标签: python python-2.7

我在下面有以下类,但努力使脚本按预期工作。

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()

我的最终目标是,如果我输入book1book2 book3等等,我会得到这样的结果(我不想将其限制为仅三本书)

Current Books, book1
Current Books, book2
Current Books, book3

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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()