2011-08-15 3 views
0

저는 파이썬에 익숙하지 않고 텍스트 메뉴가있는 간단한 프로그램을 만들려고 노력하고 있으며 대부분의 작업을 수행하는 데 함수를 사용해야합니다. 프로그램 내에서 함수를 사용하는 데 사용됨). 그래서이 프로그램에서 함수를 사용하여 사용자에게 첫 번째, 두 번째 및 세 번째 숫자를 가져 오려고합니다. 나는이 함수를 재사용 할 수 있어야만 사용자로부터 숫자를 얻을 수 있지만이 변수를 함수 내에서 사용하고 다른 곳에서는 사용할 수 없다는 문제점이 있습니다. 어떤 제안이 도움이 될 것입니다! 코드는 다음과 같습니다.함수 밖에서 변수를 정의하는 데 문제가 있음 (파이썬)

option = 1 
while option !=0: 
    print "\n\n\n************MENU************" 
    print "1. Counting by one" 
    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" 

     countingSubmenu = input("Please make a selection: ") 
     def getNum(): 
      firstNum = input("Please state what number to start at: ") 
      secondNum = input("Please state what number to end at: ") 
      if countingSubmenu == 3 or countingSubmenu == 4: 
       thirdNum = input("Please state what increment you would want to go up by: ") 

     if option == 1: 
      getNum() 
      for x in range(firstNum, secondNum+1): 
       print x 
      print "End of test." 
+0

함수 내에서 선언 한 변수가 함수 외부에 존재하지 않습니다. 그것들을'로컬 변수 '라고 부릅니다. 변수가 함수 외부에 존재하게하려면 함수 밖에서 변수를 선언해야합니다. –

답변

5

변수는 정의 된 기능의 지역 변수입니다. 함수가 해당 값을 반환하도록 시도 할 수도 있습니다.

def getNum(): 
    firstNum = input("...") 
    secondNum = input("...") 
    thirdNum = input("...") 
    return firstNum, secondNum, thirdNum 

if option == 1: 
    firstNum, secondNum, thirdNum = getNum() 
+0

그래, 튜플을 반환하는 것은이 작업을 수행하는 매우 간단하고 비범 한 방법입니다. – spacediver

+0

변수를 함수로 갖는 배후의 파이썬 적 논리를 설명해 주시겠습니까? – user895344

+0

그래, 내 코드에 구현하려고하면 'NoneType'개체가 반복되지 않습니다. : / – user895344

1

또는 전역 변수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

global a_var 
    def a_function(): 
    global a_var 
    a_var = 3 

a_function() 
print a_var 

그러나 반환 값은 아마도 더 깨끗합니다.

관련 문제