0

次のコードで何が間違っているのか教えてもらえますか? (Python 2.7 の場合)

def echo(msg):
    print msg


def loop(x,y):
    a = 0
    while (a < x + 1):
        a = a + 1
        y

loop(5,echo("ok"))

「OK」を 5 回取得する必要がありますが、x の値に関係なく、「OK」を 1 回だけ取得します。

4

3 に答える 3

1

echo("ok") は、関数に渡す前に評価されている可能性があります。これが本当に必要なものです

def loop(x,y, *args):
    a = 0
    while (a < x + 1):
            a = a + 1
            y(*args)

def echo(msg):
     print msg

loop(5,echo, "ok")
于 2013-03-29T04:41:43.597 に答える
1

echo("ok")を呼び出すときに評価しているためですloop

おそらくやりたいことはecho("ok")、各反復で呼び出すことです。

def echo(msg):
    print msg

def call_echo_ok():
    echo("ok")       

def loop(x,y):
    a = 0
    while (a < x + 1):
        a = a + 1
        y()

loop(5, call_echo_ok)

これは、ラムダ関数を使用するとより簡潔に実行できることに注意してください。

def echo(msg):
    print msg   

def loop(x,y):
    a = 0
    while (a < x + 1):
        a = a + 1
        y()

loop(5, lambda: echo('ok'))
于 2013-03-29T04:41:51.413 に答える
-2

これを試すことができます:

def loop(times,message):
     for i in range(times):
          print message

loop(5,"Ok")
于 2013-03-29T04:39:17.603 に答える