Возникают проблемы с определением переменных вне функции (Python) - PullRequest
0 голосов
/ 15 августа 2011

Я довольно плохо знаком с Python и пытаюсь создать простую программу, в которой у вас есть текстовые меню, и мне приходится использовать функции для выполнения большей части работы (чтобы привыкнуть к использованию функций внутри программы).Поэтому я пытаюсь использовать функцию в этой программе, чтобы получить первое, второе и, возможно, третье число от пользователя.Мне нужно иметь возможность повторно использовать эту функцию, чтобы я мог получить упомянутые числа от пользователя, но у меня проблемы с возможностью использовать эти переменные только внутри функции и нигде больше.Любые предложения помогут!Вот код:

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."

Ответы [ 2 ]

5 голосов
/ 15 августа 2011

Переменные являются локальными для функций, в которых они определены.Вы можете попробовать заставить вашу функцию возвращать эти значения:

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

if option == 1:
    firstNum, secondNum, thirdNum = getNum()
1 голос
/ 15 августа 2011

Кроме того, вы можете использовать глобальные переменные. Например:

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

a_function()
print a_var

Однако использование возврата, вероятно, чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...