Как изменить значение переменной внутри if-statment и применить все в python - PullRequest
0 голосов
/ 16 мая 2019

Я создаю функцию в своем чате чата, которая меняет имя агента бота.Я объявляю имя бота сверху.

bot = "Bot" 

Затем я создаю функцию, которая принимает данные от пользователя и меняет имя бота

    elif "c-a" in inp:
        settt = True
        print(f"Choose agent(1-7):", end=' ')
        while settt:
            s_c = input()

            try:
                s = int(s_c)
            except ValueError:
                s = str(s_c)

            sv = type(s)

            if sv is int:
                if s == 1:
                    bot = "Bhaskar"
                    return bot
                elif s == 2:
                    bot = "Divya"
                    return bot
                elif s == 3:
                    bot = "Nayan"
                    return bot
                elif s == 4:
                    bot = "Sruti"
                    return bot
                elif s == 5:
                    bot = "Gagan"
                    return bot
                elif s == 6:
                    bot = "Ruchi"
                    return bot
                elif s == 7:
                    bot = "Abhishek"
                    return bot
                else:
                    a()
                    print("I didn't get it. Chose between 1 to 7 or type /h for help & /q for discard")
                    q()
            else:
                if s == "/h":
                    bot_list()
                elif s == "/q":
                    settt = False
                else:
                    a()
                    print("I didn't get it. Chose between 1 to 7 or type /h for help & /q for discard")
                    q()

Но значениебот остается прежним.Это не изменится.

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Это потому, что переменная bot является глобальной. Внутри вашей функции до того, как операторы if else добавят эту строку

global bot

Таким образом, код будет выглядеть так:

bot = "bot"

def name():
    global bot
    #if else statements begin here
0 голосов
/ 16 мая 2019

Вы должны добавить global bot строку к вашей функции.Но я предлагаю избегать глобальных переменных.Я думаю, что вы должны дать его в качестве параметра и вернуть измененную переменную.

def your_function(param=None):
    ... Some code (Here you can use the value of bot variable which name is param inside this function.) ...
    return param
bot = your_function(param=bot)

Это означает, что вы перезаписываете переменную bot значением, возвращаемым вашей функцией.

Пример:

bot = 5
print("Before function: %s" % bot)
def your_function(param=None):
    param = param*2
    return param
bot = your_function(param=bot)
print("After function: %s" % bot)

Вывод:

python test.py 
Before function: 5
After function: 10
...