Форум сайта python.su
from tkinter import *
from tkinter import messagebox
def calculate_bmi(): тут ошибка, как исправить не пойму.
kg = int(weight_tf.get())
m = int(heihgt_tf.get())/100
bmi = kg/(m*m)
bmi = round(bmi, 1)
if bmi < 18.5: messagebox.showinfo('bmi-pythonguides', f'ИМТ = {bmi} соответствует недостаточному весу')
elif (bmi > 18.5) and (bmi < 24.9): messagebox.showinfo('bmi-pythonguides', f'ИМТ = {bmi} соответствует нормальному весу')
elif (bmi > 24.9) and (bmi < 29.9): messagebox.showinfo('bmi-pythonguides', f'ИМТ = {bmi} соответствует избыточному весу')
else: messagebox.showinfo('bmi-pythonguides', f'ИМТ = {bmi} соответствует ожирению')
root = Tk()
root.title(“Калькулятор индекса массы тела (ИМТ)”)
root.geometry('400x300')
Frame = Frame(root, padx = 10, pady = 10)
Frame.pack(expand=True)
heihgt_lb = Label(Frame, text=“Введите свой рост (в см)”)
heihgt_lb.grid(row=3, column=1)
weight_lb = Label(Frame, text=“Введите свой вес (в кг)”,)
weight_lb.grid(row=4, column=1)
heihgt_tf = Entry(Frame,)
heihgt_tf.grid(row=3, column=2, pady=5)
weight_tf = Entry(Frame,)
weight_tf.grid(row=4, column=2, pady=5)
cal_btn = Button(Frame, text='Рассчитать ИМТ', command=calculate_bmi)
cal_btn.grid(row=5, column=2)
root.mainloop()
Ошибка NameError: name ‘bmi’ is not defined, подскажите что не так.
Офлайн
Max.MaxУ тебя неправильно выставлены отступы. Из-за этого bmi попадает не в ту область видимости и становится в ней несуществующей переменной, с которой пытаются выполнить какую-то операцию.
подскажите что не так
Отредактировано py.user.next (Ноя. 25, 2022 18:52:36)
Офлайн
Спасибо, за совет но я думаю не в этом дело. Переменная определяется если ей задать так bmi=1 допустим, тогда программа запускается но с ошибкой исполнения. Вот я и ломаю голову что не такб а отступы в порядке вроде.
Офлайн
Выложи код по-нормальному
[code python]
тут пиши код
[/code]
Max.MaxЕсли бы они были в порядке, этой ошибки бы не было
а отступы в порядке вроде
Max.MaxNameError: name 'bmi' is not defined
Отредактировано py.user.next (Ноя. 26, 2022 09:24:29)
Офлайн