如何在Python中返回两个值

时间:2015-04-23 18:08:37

标签: python return-value

我在下面有以下代码。

class NameParser:

    def __init__(self):
        self.getName

    def getName(self, name):
        splitName = name.split(' ')
        surname = splitName.pop()
        for i in range(len(splitName)):
            print('Name: %s' % splitName[i])

        return('Surname: %s' % surname)


np = NameParser()

print(np.getName("ali opcode goren"))

# output: name: ali, name: opcode, surname: goren

我如何返回两个值?如下面的代码:

for i in range(len(splitName)):
    return('Name: %s' % splitName[i])

return('Surname: %s' % surname)

# output: name ali: (error) i want all values name, name, surname

我想要所有的值,但只需要一个输出。我该如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

  1. 拆分:按空格拆分名称,然后再次执行列表理解以从列表中删除空字符串。
  2. POP :按pop()方法从列表中获取最后一项,并将其分配给surname变量。
  3. 异常处理:在弹出过程中执行异常处理。如果输入为空,则会引发IndexError异常。
  4. 字符串连接:按for loop对列表中的每个项目进行迭代,并将值分配给user_name变量。
  5. 再次在字符串中连接surname
  6. 显示结果。
  7. <强>演示

    class NameParser:
        def __init__(self):
            pass
    
        def getName(self, name):
            #- Spit name and again check for empty strings.
            splitName = [i.strip() for i in name.split(' ') if i.strip()]
            #- Get Surname. 
            try:
                surname = splitName.pop()
            except IndexError:
                print "Exception Name for processing in empty."
                return ""
            user_name = ""
            for i in splitName:
                user_name = "%s Name: %s,"%(user_name, i)
            user_name = user_name.strip()
    
            user_name = "%s Surname: %s"%(user_name, surname)
            return user_name
    
    
    np = NameParser()
    user_name = np.getName("ali      opcode       goren      abc")
    print "user_name:", user_name
    

    <强>输出

    user_name: Name: ali, Name: opcode, Name: goren, Surname: abc
    

答案 1 :(得分:1)

试试这个:

class NameParser:

    def __init__(self):
        self.getName

    def getName(self, name):
        listy = [] # where the needed output is put in
        splitName = name.split(' ')

        for i in range(len(splitName)):
            if i==(len(splitName)-1):#when the last word is reach
                listy.append('Surname: '+ splitName[i])
            else:
              listy.append('Name: '+ splitName[i])


        return listy


nr = NameParser()

print(nr.getName("ali opcode goren"))

# output: name: ali, name: opcode, surname: goren

whithout loop:

class NameParser:

    def __init__(self):
        self.getName

    def getName(self, name):
        listy = [] # where the needed output is put in
        splitName = name.split(" ")
        listy ="Name",splitName[0],"Name",splitName[1],"Surname",splitName[2]



        return listy


nr = NameParser()

print(nr.getName("ali opcode goren"))

# output: name: ali, name: opcode, surname: goren

答案 2 :(得分:1)

尝试使用yield

class NameParser:

    def __init__(self):
        self.getName

    def getName(self, name):
        splitName = name.split(' ')
        surname = splitName.pop()
        for i in range(len(splitName)):
            yield ('Name: %s' % splitName[i])

        yield ('Surname: %s' % surname)


np = NameParser()

for i in (np.getName("ali opcode goren")):
    print i

答案 3 :(得分:1)

你可以这样做:

def getName(self, name):
    return name.split(' ')

它会返回一个元组

def get_name(name):
   return name.split(' ')

>>> get_name("First Middle Last")
['First', 'Middle', 'Last']

答案 4 :(得分:0)

或者您可以尝试

IDs