python如何制作列表并打印它

时间:2014-02-01 04:04:55

标签: python

嗨我在python中非常新,并且编写了一个函数

def makeList(x,c):

  if(isinstance( x, int )) and (isinstance(x,chr)):
    mylist = []
    for i in range(c):
    mylist.append(x)
    print mylist
  else:
      print ' Sorry, but 'Hello' is not a valid length.'
      return

它只是定义一个函数并打印列表。 我只是无法运行它并且像这样放出

>>> myList = makeList('a',5)
>>> myList
  ['a','a','a','a','a']

>>> makeList(3,12)
  [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]

>>> myList = makeList(7,"Hello")
  Sorry, but 'Hello' is not a valid length.
>>> myList 
  None 

我跑的时候有错误可以告诉我为什么? 非常感谢你

3 个答案:

答案 0 :(得分:1)

Python中没有chr类型,而是使用str。来自Python Docs

  

字符串的项目是字符。没有单独的字符类型;一个字符由一个项目的字符串表示。

此外,我想您要检查c是否为整数且xstr

if(isinstance(c, int)) and (isinstance(x, str)):

此外,你必须缩进

mylist.append(x)

所以它位于for循环的主体中。为了使您的函数makeList返回一个列表,您必须添加return语句:

return mylist

您的代码如下:

def makeList(x, c):
    if(isinstance(c, int)) and (isinstance(x, str)):
        mylist = []
        for i in range(c):
            mylist.append(x)
        return mylist
    else:
        print " Sorry, but 'Hello' is not a valid length."
        return

答案 1 :(得分:1)

添加到@Christian回答,在python中你使用duck typing而不是检查实例类型,makeList的一个版本可以是:

 >>> def makeList(x,c):
 ...     try:
 ...         return [x]*c
 ...     except TypeError:
 ...         print " Sorry, but 'Hello' is not a valid length."
 ... 
 >>> 
 >>> makeList(7,"Hello")
  Sorry, but 'Hello' is not a valid length.
 >>> makeList(3,12)
 [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
 >>> makeList('a',5)
 ['a', 'a', 'a', 'a', 'a']

另见https://softwareengineering.stackexchange.com/questions/175655/python-forgiveness-vs-permission-and-duck-typing

答案 2 :(得分:0)

您是否意识到您的参数在上次通话中是相反的?

>>> makeList(3,12)
  [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> myList = makeList(7,"Hello")

这可能就是为什么那段时间没有工作的原因。

还要记住从chr到str

的更改建议