2016-10-04 4 views
-2

다음 코드에서는 'end'함수에서 'guesses'변수를 사용 가능하게 만드는 방법을 설명합니다. 내가 이것을 시도 할 때마다 나는 추측을 받는다. 정의되지 않는다. play 함수에서 나는 숫자를 반환하고, 그 숫자가 '추측'과 같아야한다는 것을 올바르게 이해한다면, '추측'이 '끝'에서 작동하지 않을 것이라는 것을 이해하지 못하는 이유 때문에. 파라미터다른 함수에서 main 변수를 사용하는 방법은 무엇입니까?

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)) 

파라미터로 입력을 전달하고 출력에서는 프로그램 데이터의 흐름을 제어하고 global 변수를 사용할 수 있도록 같은 변수를 통과 return 사용 등

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()의 매개 변수로 전달 된 데이터를 인쇄 할 때 두 번 인쇄 할 필요가 없습니다.

5

패스를 버팀목. 이 같은

+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()은 별도의 범위가있는 두 개의 개별 기능입니다. 함수 main()에 변수 guesses을 정의했습니다. end()이 정의 된 범위에 guesses에 대한 액세스 권한이 없으므로 end()에는 사용할 수 없습니다. 이는 end()main() 내에서 호출된다는 사실에도 불구하고 있습니다. 함수 내부에 end()이 생성/정의되었을 때 guesses이 존재한다는 사실을 알지 못합니다.

데이터 흐름과 관련하여 매우 일반적인 프로그래밍 패러다임의 필요성을 강조하면서 두 기능간에 정보를 전달해야합니다. "매개 변수"또는 "인수"를 사용하여 함수에 정보를 전달할 수 있습니다. 이들은 함수가 호출 될 때 정의되거나 설정되는 변수입니다.

파이썬에서, 그들은 다음과 같이 :

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

좋은 설명! 그것은 아마 [낚시를 가르쳐] (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 –

관련 문제