1

私のweb2pyアプリでは、まだweb2pyとpythonが初めてですが、pythonシェルでうまく機能するこのコードを作成しました。

python モジュール: メソッドは、ユーザーが方程式クエリを入力して答えを得るような方法で機能します。それが追加の場合、method1 はそれを解決します。たとえば、別のコードを実行するために呼び出される他のメソッドと同じです。

def method1():# to do additions
    name = input('Please Enter equation here: ').lower()
    if '1 + 1':
        answer = code
        return answer

def method2():# to do subtractions
    name = input('Please Enter equation here: ').lower()
    if '1 - 1':
        answer = code
        return answer

コントローラーでは、次のようにメソッドをインポートしましたが、これらよりも多くのメソッドがあります

from applications ...... import method1
from applications ...... import method2
from applications ...... import method3
from applications ...... import method4

method1 = method1
method1 = method2
method1 = method3
method1 = method4

G0 = [method1, method2, method3, method4]

def Foo():
    code..
    for (func) in G0:
        return func()

問題は、リスト内の位置 [0] にある method1 のみが呼び出され、他のメソッドは呼び出されないことです。ユーザーがクエリを入力したときに任意のメソッドをランダムに呼び出したい。

4

4 に答える 4

1

ループ内から戻るため、method1 のみが呼び出されるため、ループも終了します。何を返したいですか?おそらくすべての戻り値のリストですか?

def Foo():
    ret_list = []
    for (func) in G0:
        ret_list.append(func())
    return ret_list
于 2014-07-10T16:24:35.940 に答える
0

これらすべてのメソッドを で実行しようとしていますG0か? もしそうなら、問題はあなたが使用していることですreturn func()returnキーワードは呼び出されるとすぐに終了します。そのFoo()ため、呼び出される関数は 1 つだけです。値を保存する場合は、func()orを使用する必要があります。result = func()

これらのメソッドの 1 つだけを実行したい場合は、forループを破棄して を使用する必要がありますreturn G0[x]()。ここで、xは呼び出したい関数のリスト インデックスです。

于 2014-07-10T16:23:27.010 に答える