Как вычесть средний балл?

Мне выводит ошибку TypeError: 'int' object is not iterable. Я хочу вывести средний балл нажатиями на несколько кнопок.

import tkinter as tk
from tkinter import *

win = Tk()
win.geometry('450x250')
win.resizable(0,0)
win.title('Средний балл')

def btn_click(item):
    global expression
    expression = list(map(int, item)) / len(item)
    input_text.set(expression)
def bt_clear():
    global expression
    expression = ""
    input_text.set("")
expression = ""

input_text = StringVar()

myLabel1 = Label(win, textvariable=input_text, font=("Montserrat", 15))
myLabel1.pack()

one = Button(win, font=("Montserrat", 12), bg='#dadada', text="1", width=4, command=lambda: btn_click(1))
one.pack()
two = Button(win, font=("Montserrat", 12), bg='#dadada', text="2", width=4, command=lambda: btn_click(2))
two.pack()
three = Button(win, font=("Montserrat", 12), bg='#dadada', text="3", width=4, command=lambda: btn_click(3))
three.pack()
four = Button(win, font=("Montserrat", 12), bg='#dadada', text="4", width=4, command=lambda: btn_click(4))
four.pack()
five = Button(win, font=("Montserrat", 12), bg='#dadada', text="5", width=4, command=lambda: btn_click(5))
five.pack()

win.mainloop()

Ответы (1 шт):

Автор решения: Андрей Крузлик

в функцию btn_click(item) нужно передать список например ['1','2','3']

expression = sum(map(int, item)) / len(item)

sum(map(int, item)) - map преобразует каждый элемент в число, а sum подсчитает сумму. Ну, а len(item) поделит на количество элементов

import tkinter as tk
from tkinter import *

win = Tk()
win.geometry('450x250')
win.resizable(0, 0)
win.title('Средний балл')


def btn_click(item):
    global expression
    expression = sum(map(int, item)) / len(item)
    input_text.set(expression)


def bt_clear():
    global expression
    expression = ""
    input_text.set("")


expression = ""

input_text = StringVar()

myLabel1 = Label(win, textvariable=input_text, font=("Montserrat", 15))
myLabel1.pack()
mylist = []
one = Button(win, font=("Montserrat", 12), bg='#dadada', text="1", width=4,   
             command=lambda: mylist.append(1))
one.pack()
two = Button(win, font=("Montserrat", 12), bg='#dadada', text="2", width=4,
             command=lambda: mylist.append(2))
two.pack()
three = Button(win, font=("Montserrat", 12), bg='#dadada', text="3", width=4,
               command=lambda: mylist.append(3))
three.pack()
four = Button(win, font=("Montserrat", 12), bg='#dadada', text="4", width=4,
              command=lambda: mylist.append(4))
four.pack()
five = Button(win, font=("Montserrat", 12), bg='#dadada', text="5", width=4,
              command=lambda: mylist.append(5))
five.pack()
sr = Button(win, font=("Montserrat", 12), bg='#dadada', text="Среднее число", width=20,
            command=lambda: btn_click(mylist))
sr.pack()
win.mainloop()
→ Ссылка