2

我正在阅读一本 Python 书中的练习,它是这样说的:

修改 do_twice 使其接受两个参数,一个函数对象和一个值,并调用该函数两次,将值作为参数传递。

编写一个更通用的 print_spam 版本,称为 print_twice,它将一个字符串作为参数并打印两次。

使用修改后的 do_twice 版本调用 print_twice 两次,将 'spam' 作为参数传递。

这是我写的:

def do_twice(f, g):
    f(g)
    f(g)

def print_spam(s):
    print (s)

do_twice(print_spam('lol'))

应该怎么写?我完全被这个难住了。

4

4 回答 4

7

只需将.string作为第二个参数do_twicedo_twice函数调用print_spam并将 提供为string参数:

def do_twice(f, g):
    f(g)
    f(g)

def print_spam(s):
    print (s)

do_twice(print_spam,'lol')

印刷:

lol
lol
于 2013-01-17T22:07:01.867 回答
1

如果由于某种原因你想重复函数 n 次,你也可以写这样的东西......

def do_n(f,g,n):
    for i in range(n):
        f(g)

do_n(print_spam,'lol',5)

lol
lol
lol
lol
lol
于 2013-01-17T22:49:57.007 回答
0
def do_twice(func, arg):
    """Runs a function twice.

    func: function object
    arg: argument passed to the function
    """
    func(arg)
    func(arg)


def print_twice(arg):
    """Prints the argument twice.

    arg: anything printable
    """
    print(arg)
    print(arg)


def do_four(func, arg):
    """Runs a function four times.

    func: function object
    arg: argument passed to the function
    """
    do_twice(func, arg)
    do_twice(func, arg)


do_twice(print_twice, 'spam')
print('')

do_four(print_twice, 'spam')
于 2016-01-18T13:23:57.273 回答
0

在我看来,根据 thinkpython 书中的问题,它有四个不同的部分,因此每个部分在提供的指令方面都有不同的代码片段。第二部分将 print_twice 作为函数而不是 print_spam 。同样在第三部分中,“垃圾邮件”将是提供的论点,而不是“大声笑”。所以你可以试试这个。祝一切顺利。

这是代码

def do_twice(f,g):
f(g) 
f(g)

def print_twice(s):
print(s)
print(s)

do_twice(print_twice,'spam')

def do_four(do_twice,g):
do_twice(g)
do_twice(g)
于 2021-09-20T00:34:53.637 回答