如何在Python中返回两个值

问题描述 投票:0回答:5

我下面有以下代码。

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

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

python return-value
5个回答
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

无循环:

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

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

Demo

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
投票

尝试使用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

1
投票

您可以执行此操作:

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

它将返回一个元组

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

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

0
投票

或者您可以尝试

class test():
    map = {}
    for i in range(10):
        map[f'{i}'] = i
    return map
© www.soinside.com 2019 - 2024. All rights reserved.