Как вычесть средний балл?
Мне выводит ошибку 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()