-3

Python で次のプログラムを実行すると、関数は変数を取り込みますが、残りは完全にスキップし、何もせずにプログラムのメイン メニューを再表示します。さらに、修飾する「if」ステートメントをスキップし、最初または 2 番目のオプション (3 番目の変数は必要ありません) が選択されている場合でも、すべての変数を要求します。ところで、これはインデント エラーであってはなりません。stackoverflow 内のコードであることを示すためにインデントしただけです。

編集:気にしないでください。私はそれを働かせました。関数の括弧内の変数はすべて同じでなければなりません。当たり前!額を叩く

option = 1
while option !=0:
    print "\n\n\n************MENU************"
    print "1. Counting"
    print "2. Fibbonacci Sequence"
    print "0. GET ME OUTTA HERE!"
    print "*" * 28
    option = input("Please make a selection: ") #counting submenu
    if option == 1:

        print "\n\n*******Counting Submenu*******"
        print "1. Count up by one"
        print "2. Count down by one"
        print "3. Count up by different number"
        print "4. Count down by different number"
        print "*" * 28
        countingSubmenu = input("Please make a selection: ")
        x=0
        y=0
        z=0
        q=0
        def counting (x, y, z, countingSubmenu, q):
            x = input("Please choose your starting number: ")
            y = input("Please choose your ending number: ")
            if countingSubmenu == 1:
                for q in range (x, y+1, 1):
                    print q
            elif countingSubmenu == 2:
                for q in range (x, y, -1):
                    print q
            elif countingSubmenu == 3:
                z = input("Please choose an increment: ")
                for q in range (x, y+1, z):
                    print q
            else:
                z = input("Please choose an increment: ")
                for q in range (x, y, -z):
                    print q
            return x, y, z, q
        if countingSubmenu == 1:
            counting(countingSubmenu, x, y, z, q)
        if countingSubmenu == 2:
            counting(countingSubmenu, x, y, z, q)
        if countingSubmenu == 3:
            counting(countingSubmenu, x, y, z, q)
        if countingSubmenu == 4:
            counting(countingSubmenu, x, y, z, q)
4

4 に答える 4

5

あなたの関数は として定義されてcounting (x, y, z, countingSubmenu, q)いますが、それを呼び出すとき、引数リストは ですcounting(countingSubmenu, x, y, z, q)

于 2011-09-01T22:57:08.467 に答える
3

Python 2.7で動作しているようです(Chris Phillipsの回答を参照)

とにかくあなたができるいくつかの改善

  • countingループから関数を取り出します
  • 4回電話する必要はありませんcounting。代わりに電話するだけです。counting(countingSubmenu, x, y, z, q)
  • counting関数は異なる順序でパラメーターを受け取り、間違った順序で渡します
  • ユーザーに質問しているので、x、y、zを渡す必要はありません
于 2011-09-01T22:57:46.443 に答える
3

使用しているPythonのバージョンについては言及されていませんが、3.xシリーズのものだと思います。Python 3は、input()の動作を変更して、2.xシリーズの以前のraw_input()と一致させました。

そのため、input()は常に文字列を返すようになりました。したがって、結果に対してint()またはeval()を呼び出す必要があります(個人的には、int()をお勧めします)。

于 2011-09-01T23:02:30.850 に答える
1

あなたの問題は、引数をcounting()間違った順序で渡していることです。

于 2011-09-01T23:06:06.923 に答える