函数调用Python basic
我试图将元组函数调用Python basic,python,Python,我试图将元组('a',1),('b',2),('c',3)中的值输入函数dostuff,但我总是得到None或False的返回值。我是新手,如果这个问题是基本的,我很抱歉。我将感谢任何帮助 我预计其结果是: a1---8 b2---8 c3---8 代码: 您可以使用列表理解在一行中完成: char = 8 point_list = [('a', 1), ('b', 2),('c', 3)] print("\n".join(["{}{}---{}".format(s, n, char) fo
('a',1),('b',2),('c',3)
中的值输入函数dostuff
,但我总是得到None
或False
的返回值。我是新手,如果这个问题是基本的,我很抱歉。我将感谢任何帮助
我预计其结果是:
a1---8
b2---8
c3---8
代码:
您可以使用列表理解在一行中完成:
char = 8
point_list = [('a', 1), ('b', 2),('c', 3)]
print("\n".join(["{}{}---{}".format(s, n, char) for s, n in point_list]))
“{}{}-{}”。format(s,n,char)
通过用格式中的每个输入替换{}
来创建一个字符串,因此“{}{}-{}”。format(“a”,1,8)
将返回“a1--8”
对于s,n in point_list
将在point_list
列表上创建一个隐式循环,对于列表中的每个元素(每个元组),第一个元素将存储在s
中,第二个元素存储在n
[“{}{}-{}”。点列表中s,n的格式(s,n,char)
因此是通过将我们想要的格式应用于每个元组而创建的列表:它将返回[“a1-8”,“b2-8”,“c3-8”]
最后,“\n”.join([“a1-8”、“b2-8”、“c3-8”])
通过将列表中的每个元素连接到下一个元素,从字符串列表中创建一个字符串:“a1-8\nb2-8\nc3-8”
(“\n”
是表示行尾的特殊字符您可以使用列表理解在一行中完成:
char = 8
point_list = [('a', 1), ('b', 2),('c', 3)]
print("\n".join(["{}{}---{}".format(s, n, char) for s, n in point_list]))
“{}{}-{}”。format(s,n,char)
通过用格式中的每个输入替换{}
来创建一个字符串,因此“{}{}-{}”。format(“a”,1,8)
将返回“a1--8”
对于s,n in point_list
将在point_list
列表上创建一个隐式循环,对于列表中的每个元素(每个元组),第一个元素将存储在s
中,第二个元素存储在n
[“{}{}-{}”。点列表中s,n的格式(s,n,char)
因此是通过将我们想要的格式应用于每个元组而创建的列表:它将返回[“a1-8”,“b2-8”,“c3-8”]
最后,“\n”.join([“a1-8”、“b2-8”、“c3-8”])
通过将列表中的每个元素连接到下一个元素,从字符串列表中创建一个字符串:“a1-8\nb2-8\nc3-8”
(“\n”
是一个表示行尾的特殊字符我认为您误解了函数的返回值:除非另有规定,否则所有函数在完成时都将返回None
。您的代码:
print(callit([('a',1), ('b',2),('c',3)],8))`
告诉Python解释器“打印此函数调用的返回值”。这不是打印您期望的值,因为callit
函数没有指定返回值。您可以在dostuff
函数中更改return
,如下所示:
def dostuff(stri,numb,char):
cal = stri+str(numb)+'---'+str(char)
print cal
def callit (tups,char):
for x in range(len(tups)):
dostuff(tups[x][0],tups[x][1],char)
callit([('a',1), ('b',2),('c',3)],8)
这会将第三行上的返回更改为打印命令,并从callit
调用中删除打印命令。
另一种选择是:
def dostuff(stri,numb,char):
cal = stri+str(numb)+'---'+str(char)
return cal
def callit (tups,char):
for x in range(len(tups)):
cal = dostuff(tups[x][0],tups[x][1],char)
print(cal)
callit([('a',1), ('b',2),('c',3)],8)
这将从dostuff
函数中获取返回值,并将其存储在名为cal的变量中,然后可以将其打印或写入磁盘上的文件。我认为您误解了函数的返回值:除非另有规定,否则所有函数在完成时都将返回None
e:
print(callit([('a',1), ('b',2),('c',3)],8))`
告诉Python解释器“打印此函数调用的返回值”。这不是打印您期望的值,因为callit
函数没有指定返回值。您可以在dostuff
函数中更改return
,如下所示:
def dostuff(stri,numb,char):
cal = stri+str(numb)+'---'+str(char)
print cal
def callit (tups,char):
for x in range(len(tups)):
dostuff(tups[x][0],tups[x][1],char)
callit([('a',1), ('b',2),('c',3)],8)
这会将第三行上的返回更改为打印命令,并从callit
调用中删除打印命令。
另一种选择是:
def dostuff(stri,numb,char):
cal = stri+str(numb)+'---'+str(char)
return cal
def callit (tups,char):
for x in range(len(tups)):
cal = dostuff(tups[x][0],tups[x][1],char)
print(cal)
callit([('a',1), ('b',2),('c',3)],8)
这将从dostuff
函数中获取返回值,并将其存储在名为cal的变量中,然后可以将该变量打印或写入磁盘上的文件。对于要在python中返回值的函数,它必须具有return
语句。在callit
函数中,您缺少return
的值thonic方法既有一个值,也可以使用如下内容遍历元组:
def callit(tups, char):
x = [dostuff(a, b, char) for a, b in tups]
return x
def test_callit():
tups = [('a', 1), ('b', 2), ('c', 3)]
expected = 'a1---8\nb2---8\nc3---8'
result = callit(tups, 8)
assert result == expected, (str(result) + " != " + expected)
def callit(tups, char):
result = ''
for tup in tups:
result += dostuff(tup[0], tup[1], char) + '\n'
result = result[:result.rfind('\n')] # trim off the last \n
return result
由于tups
是一个元组列表,因此我们可以使用对tups中的a,b进行迭代-这将获取成对的两个元素。接下来dostuff(a,b,char)
对每对元素和指定的char
调用您的dostuff
函数。将其括在括号中将生成一个列表,然后使用return
语句返回该列表
注意:您不需要执行以下操作:
x = ...
return x
您可以使用return[dostuff(a,b,char)表示tups中的a,b]
但为了清晰起见,我使用了前者。对于在python中返回值的函数,它必须有一个return
语句。在callit
函数中,您缺少一个return
的值。一种更为python式的方法既有一个值,又使用类似以下内容迭代元组:
def callit(tups, char):
x = [dostuff(a, b, char) for a, b in tups]
return x
def test_callit():
tups = [('a', 1), ('b', 2), ('c', 3)]
expected = 'a1---8\nb2---8\nc3---8'
result = callit(tups, 8)
assert result == expected, (str(result) + " != " + expected)
def callit(tups, char):
result = ''
for tup in tups:
result += dostuff(tup[0], tup[1], char) + '\n'
result = result[:result.rfind('\n')] # trim off the last \n
return result
由于tups
是一个元组列表,因此我们可以使用对tups中的a,b进行迭代-这将获取成对的两个元素。接下来dostuff(a,b,char)
对每对元素和指定的char
调用您的dostuff
函数。将其括在括号中将生成一个列表,然后使用return
语句返回该列表
注意:您不需要执行以下操作:
x = ...
return x
您可以只使用return[dostuff(a,b,char)表示元组中的a,b]
但为了清晰起见,我使用了前者。正如@n1c9所说,每个Python函数都必须返回一些对象,如果函数定义中没有编写return
语句,则函数将隐式地返回N