• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Взаимодействие с переменной используя функцию python

  • Автор темы Автор темы Monotik
  • Дата начала Дата начала
  • Теги Теги
    python

Monotik

One Level
03.09.2020
24
0
BIT
0
Добрый вечер, пытаюсь взаимодействовать со списком используя фунцию, но выводит ошибку.

Python:
from tkinter import *

root=Tk()
root.title("Bets")
root.resizable(width=False, height=False)
root.geometry("200x40")
root.configure(bg='#bababa')

listt=[]
a=0

def bet():
    a+=1
    listt.append(int(a))
    print(listt)



btn1= Button(root,text=' ', bg='#a34040', fg='#fff', command=bet)
btn1.place(x=10,y=10,width=180, height=20)
root.mainloop()

Я хочу чтобы при нажатии кнопки список пополнялся на a. Я искал ответ, но везде как то странно объясняют и решают чуть другие задачи
 
Решение
На выходе конкретно что нужно получить? А то объяснения какие-то противоречивые, сбрасывается, увеличивается.... Если увеличивающийся список, то можно просто объявить глобальную переменную.


Python:
from tkinter import *

root = Tk()
root.title("Bets")
root.resizable(width=False, height=False)
root.geometry("200x40")
root.configure(bg='#bababa')

listt = []
a = 0

def bet():
    global a
    a += 1
    listt.append(a)
    print(listt)


btn1 = Button(root ,text=' ', bg='#a34040', fg='#fff', command=bet)
btn1.place(x=10, y=10, width=180, height=20)
root.mainloop()
Вам нужно проштудировать раздел "глобальные и локальные переменные", без этого делать в python нечего. Ошибка самая элементарная - переменная находится вне видимости функции. Её всего лишь нужно переместить в саму функцию. И приведение к типу int здесь лишнее, так как переменная и так цифра.

Python:
from tkinter import *

root = Tk()
root.title("Bets")
root.resizable(width=False, height=False)
root.geometry("200x40")
root.configure(bg='#bababa')

listt = []


def bet():
    a = 0
    a += 1
    listt.append(int(a))
    print(listt)


btn1 = Button(root ,text=' ', bg='#a34040', fg='#fff', command=bet)
btn1.place(x=10, y=10, width=180, height=20)
root.mainloop()
 
Вам нужно проштудировать раздел "глобальные и локальные переменные", без этого делать в python нечего. Ошибка самая элементарная - переменная находится вне видимости функции. Её всего лишь нужно переместить в саму функцию. И приведение к типу int здесь лишнее, так как переменная и так цифра.

Python:
from tkinter import *

root = Tk()
root.title("Bets")
root.resizable(width=False, height=False)
root.geometry("200x40")
root.configure(bg='#bababa')

listt = []


def bet():
    a = 0
    a += 1
    listt.append(int(a))
    print(listt)


btn1 = Button(root ,text=' ', bg='#a34040', fg='#fff', command=bet)
btn1.place(x=10, y=10, width=180, height=20)
root.mainloop()
Просто если я добавлю переменную в функцию, при повторном выполнении значение переменной сбрасывается. a увеличивается с 0 на 1, добавляется в список и снова сбрасывается до 0.
Возможно ли сохранить значение a при повторном использовании функции bet ?
 
На выходе конкретно что нужно получить? А то объяснения какие-то противоречивые, сбрасывается, увеличивается.... Если увеличивающийся список, то можно просто объявить глобальную переменную.


Python:
from tkinter import *

root = Tk()
root.title("Bets")
root.resizable(width=False, height=False)
root.geometry("200x40")
root.configure(bg='#bababa')

listt = []
a = 0

def bet():
    global a
    a += 1
    listt.append(a)
    print(listt)


btn1 = Button(root ,text=' ', bg='#a34040', fg='#fff', command=bet)
btn1.place(x=10, y=10, width=180, height=20)
root.mainloop()
 
Решение
На выходе конкретно что нужно получить? А то объяснения какие-то противоречивые, сбрасывается, увеличивается.... Если увеличивающийся список, то можно просто объявить глобальную переменную.


Python:
from tkinter import *

root = Tk()
root.title("Bets")
root.resizable(width=False, height=False)
root.geometry("200x40")
root.configure(bg='#bababa')

listt = []
a = 0

def bet():
    global a
    a += 1
    listt.append(a)
    print(listt)


btn1 = Button(root ,text=' ', bg='#a34040', fg='#fff', command=bet)
btn1.place(x=10, y=10, width=180, height=20)
root.mainloop()
Я объяснял проблему и причину её появления. А так вы очень помогли, большое спасибо
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!