2016-10-04 6 views
-2

次のコードでは、変数 '推測'を 'end'関数で私に利用可能にする方法を説明します。私がこれを試すと、私はちょうど推測を受け取りません定義されていません。プレイ機能では、私は数字を返していますが、私が正しく理解していれば、その数字は「推測」と同じでなければならず、理由のために「推測」は「終わり」では機能しません。メインからの変数を別の関数で使用する方法は?

def main(): 
    guesses = play() 
    play_again = again() 
    while (play_again == True): 
     guesses = play() 
     play_again = again() 
     total_games = 1 
     total_games += 1 
    end() 


def end(): 
    print("Results: ") 
    print("Total: " + print(str(guesses + 1))) 
+1

私はあなたのインデントがパラメータとして渡す –

+0

を誤って入力されると思います。 –

答えて

0

単にend()

def main(): 
    guesses = play() 
    play_again = again() 
    while (play_again == True): 
     guesses = play() 
     play_again = again() 
     total_games = 1 
     total_games += 1 
    end(guesses) 

def end(guesses): 
    print("Results: ") 
print("Total: " + str(guesses + 1)) 

それとも別のオプション(あなたがやって何を知っている限り、私はそれをお勧めしませんが)にパラメータとしてguessesを渡す、さメインでグローバルを推測する

guesses = None 

def main(): 
    global guesses 
    guesses = play() 
    play_again = again() 
    while (play_again == True): 
     guesses = play() 
     play_again = again() 
     total_games = 1 
     total_games += 1 
    end() 

def end(): 
    print("Results: ") 
print("Total: " + str(guesses + 1)) 

また、印刷文を修正しました。 print()のパラメータに渡したデータを印刷するために、2回印刷する必要はありません。

5

パラメータとして入力を渡すパラメータとして

def main(): 
    guesses = play() 
    play_again = again() 
    while (play_again == True): 
     guesses = play() 
     play_again = again() 
     total_games = 1 
     total_games += 1 
    end(guesses) 

def end(guesses): 
    print("Results: ") 
    print("Total: " + str(guesses + 1)) 

を渡し、出力として変数を渡すためにreturnを使用すると、あなたのようにglobal変数を使用してプログラム内のデータの流れを制御していないことができます松葉杖。

+1

ああ撮影!あなたは数秒で殴ります。それにもかかわらず... + 1 –

+1

print(print())には奇妙な動作が起こります。必要に応じて動作しないためです。 –

+0

@MikeMcMahon良いキャッチ、私はコードの残りを慎重に見ていませんでした – CoryKramer

2

このような何か:

def main(): 
    guesses = play() 
    play_again = again() 
    while (play_again == True): 
     guesses = play() 
     play_again = again() 
     total_games = 1 
     total_games += 1 
    end(guesses) 

def end(guesses): 
    print("Results: ") 
    print("Total: {}".format(guesses + 1)) 
2

main()およびend()は、別々のスコープを持つ2つの別個の機能です。関数main()の中に変数guessesを定義しました。 end()が定義されている範囲がguessesへのアクセス権を持たないため、end()は利用できません。これは、end()main()の中で呼び出されているにもかかわらずです。 end()が作成/定義されたときに、関数内にguessesが存在することが認識されません。

2つの関数間で情報を渡す必要があるため、データフローに関する非常に一般的なプログラミングのパラダイムが必要です。 「パラメータ」または「引数」を使用して、関数に情報を渡すことができます。これらは、関数が呼び出されたときに定義または設定される変数です。

はPythonで、彼らは次のようになります。

def function(argument): 
    #do something with argument 
    print (argument) 
+0

素敵な説明! OPの魚を教えることは良い考えです(https://en.wiktionary.org/wiki/give_a_man_a_fish_and_you_feed_him_for_a_day;_teach_a_man_to_fish_and_you_feed_him_for_a_lifetime)。 +1 –

関連する問題