如何在Python中返回两个值
我有下面的代码如何在Python中返回两个值,python,return-value,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' % splitNa
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
我想要所有的值,但只有一个输出。如何解决此问题?尝试以下方法:
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循环:
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
尝试使用
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
您可以这样做:
def getName(self, name):
return name.split(' ')
它将返回一个元组
def get_name(name):
return name.split(' ')
>>> get_name("First Middle Last")
['First', 'Middle', 'Last']
POP()
方法从列表中获取最后一项,并将其分配给姓氏
变量索引器
异常用户名
变量姓氏
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
输出:
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
或者你可以试试
class test():
map = {}
for i in range(10):
map[f'{i}'] = i
return map
您的预期输出是什么?不是预期的。两次返回的输出:ali goren。一次打印和一次返回的输出:ali opcode goren(我想要这个)
return“名称:%s,名称:%s,姓氏:%s”%(splitName[0],splitName[1],splitName[2])
,当输入字符串中缺少某个名称时需要执行异常处理。或者只返回split list返回splitName
@VivekSable谢谢,但这是手动的。我要自动的。示例:abc cb cde ffe ags dle like=>split[0,1,2,3,4]。但是你的代码不是自动的。谢谢你的帮助,对不起。不工作。只需输出:Name:ali我想要像:Name:ali,Name:opcode,姓氏:goren如果我使用print,这就是工作。谢谢,我得到了“goren”:。我无法获得其他值。我想我可以解决。我还添加了另一个代码,当你不需要循环时。您可以在另一个注释中询问它。@MartijnvanWezel:在第二个代码中,为什么定义listy=[]
?需要这份声明吗?你总是要列一张他有多大的名单。所以说他在我的代码中是空的,他将被声明。当你想填写列表时,使用append,这会将你想要的东西添加到列表中感谢它的工作!:)如何在没有for循环的情况下使用此代码?请阅读。阿里,要了解yield
。