函数调用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