2017-09-25 1 views
2

그래서 나는 사용자에게 그들이 테스트를 원하는 주제와 얼마나 어려울지를 묻는 코드를 프로그램하기 시작했습니다. 그리고 분명히 그 테스트를 제공합니다. 나는 그것이 어떤 테스트인지 그리고 얼마나 어려운지를 검사하는 if 문을위한 함수를 만들었고, 방금 코드를 테스트하기 위해 무작위로 던진 함수를 만들었습니다. 나는 코드를 보여줄 것이다. (분명히 아주 일찍 끝나고 아무데도 거의 끝나지 않았다.) 그리고 나는 그 문제를 설명 할 것이다.함수를 파이썬에서 함수 밖의 변수로 가져 오는 방법은 무엇입니까?

def which_test(real_dif, real_test, give_test): 
    if difficulty == real_dif and test == real_test: 
     give_test 

def easy_CS(): 
    print("HEY") 

while True: 
    test = str(input("What test do you want to take? Computer Science, History or Music? ").strip().lower()) 
    difficulty = str(input("Do you want to take the test in easy, medium or hard? ").strip().lower()) 
    which_test("easy", "computer science", easy_CS()) 

입력 변수가 무엇이든 관계없이 easy_CS() 함수가 활성화됩니다. test 변수에 "JFAWN"을 입력하고 difficulty 변수에 "JDWNA"를 입력해도 "HEY"가 계속 인쇄됩니다. 변수를 실제로 사용하도록 만들려면 어떻게해야합니까? 아니면 의도 한대로 작동하도록 만들 수 있습니까?

+0

전역 변수를 사용하면 도움이됩니다. –

+3

잘못된 위치에서 함수를 호출하고 있습니다. 'which_test' 안에서 호출하게하는 괄호를 옮겨야하므로 * 결과 *가 아닌 * 함수 *를 전달해야합니다. @ChetanVasudevan 그것은 거의 사실이 아니다. – jonrsharpe

+0

@chetanvasudevan 왜 글로벌 사용을 제안 하시겠습니까? 여기에는 그럴 필요가 없습니다. – roganjosh

답변

6

이 기능을 직접 호출하면이됩니다. 여기에 괄호를 볼까요? 그들은 함수를 호출 : 당신이해야 할 무엇을 의미

which_test("easy", "computer science", easy_CS()) 
             ^^^^^^^^^^ 

:

def which_test(real_dif, real_test, give_test): 
    if difficulty == real_dif and test == real_test: 
     give_test() # call the function 

# more code... 
which_test("easy", "computer science", easy_CS)) 
      # pass the function itself ^^^^^^ 

그래서, 아니 괄호 - 아니 함수 호출.

관련 문제