Как получить новое значение из функции в Python? - PullRequest
0 голосов
/ 11 июля 2011

Если я добавлю «Ab3» в качестве параметра, как мне будет вернуться к значению «Ab4»?

Цель этой функции - взять 3-й символ строки и добавить один к нему, если только он не равен четырем; в этом случае он не добавляет один и просто завершается. Я не знаю, как получить «Ab4», который функция создает из «Ab3», и присвоить его обратно переменной «area».

def east(area):

    area_list = list(area)

    if "1" == area_list[2]:
        area_list[2] = "2"

    elif "2" == area_list[2]:
        area_list[2] = "3"

    elif "3" == area_list[2]:
        area_list[2] = "4"

    elif "4" == area_list[2]:
        cannot_go(why)

    else:
        exit(0)

    area = "".join(area_list)

Ответы [ 3 ]

5 голосов
/ 11 июля 2011

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

def east(area):
    if area[-1] in '123':
        return area[:-1] + str(int(area[-1])+1)
    elif "4" == area[-1]:
        print 'no way'
        return area
    else:
        return 'incorrect input'# or throw and exception depends on what you really need

отредактировано согласно комментарию Криса

1 голос
/ 11 июля 2011

Строки Python неизменны (http://docs.python.org/library/stdtypes.html),, поэтому вы не можете фактически обновить объект 'area' (хотя вы можете переназначить область на новое значение, как вы продемонстрировали). Если вы хотите, чтобы вызывающая сторона новое значение, вы должны вернуть новую переменную области (область возврата).

0 голосов
/ 11 июля 2011

То, что у вас есть, сработает, вам просто нужно вернуть значение. Измените последнюю строку на return ''.join(area_list).

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