2017-09-17 16 views
0
def Reset(): 
    global seven_digit 
    seven_digit = ["","","","","","",""] 
    global x 
    x = 0 
    global eight 
    eight = 0 
    global c 
    c = 0 
    cinput() 
def cinput(): 
    global thing 
    print("Enter digit ", x+1) 
    thing = input("") 
    check() 
def check(): 
    global eight 
    global x 
    if not thing.isdigit(): 
     print("That character is not allowed") 
     cinput() 
    elif len(thing) > 1: 
     print("Those characters are not allowed") 
     cinput() 
    if x < 7: 
     seven_digit[x] = int(thing) 
     x += 1 
     cinput() 
    if x == 7: 
     eight = int(thing) 
     fcheck() 
def fcheck(): #this section is temporary just for testing 
    global c 
    c+=1 
    print("This is c, ", c) 
    print("Test") 
    print(seven_digit) 
    print(eight) 
Reset() 

これは私がaレベルタスクとして開発したコードです(これは今年のGCSEコースです)。しかし、私は問題を遭遇しました。 fcheck()の-created関数は、それ自身を8回繰り返します。私は以前のようなプロセスをPythonで使用していましたが、これまでのようなエラーは見たことがありません。私はそれを修正するために何ができるか知っていたのだろうかと思っていた。Pythonコードは必要でないときに8回繰り返されます

+0

コードstatement - thing = input()の後にcheck()の下の 'if elif'をcinput()に移動する必要があります。再帰はどのfcheck()が繰り返されるかによって発生します – Len

+2

すべてのグローバルステートメントと空白やコメントの欠如の中で私は興味があります。 –

+0

@unMask、ここで再帰はありません。一連の呼び出しがありますが、これは再帰ではなく、関数自体は呼び出しません。 –

答えて

1

checkcinputの間に相互呼び出しがあるので、fcheckを呼び出して8回呼び出されます。

一度fcheckを呼び出したい場合は、すべての評価チェーンの後に、あなただけのcheckの最後の行でそれに呼び出しを削除することができ、かつResetの終わりにそれを呼び出す:

def Reset(): 
    global seven_digit 
    seven_digit = ["","","","","","",""] 
    global x 
    x = 0 
    global eight 
    eight = 0 
    global c 
    c = 0 
    cinput() 
    fcheck() 

def cinput(): 
    global thing 
    print("Enter digit ", x+1) 
    thing = str(input("")) 
    check() 

def check(): 
    global eight 
    global x 
    if not thing.isdigit(): 
     print("That character is not allowed") 
     cinput() 
    elif len(thing) > 1: 
     print("Those characters are not allowed") 
     cinput() 
    if x < 7: 
     seven_digit[x] = int(thing) 
     x += 1 
     cinput() 
    if x == 7: 
     eight = int(thing) 

def fcheck(): #this section is temporary just for testing 
    global c 
    c+=1 
    print("This is c, ", c) 
    print("Test") 
    print(seven_digit) 
    print(eight) 

Reset() 
+0

ありがとう、この1つ自分自身を見ることができませんでした。 :) –

関連する問題