Вопрос задан 06.11.2026 в 10:02. Предмет Информатика. Спрашивает Максимов Евгений.

Потрібна допомога в пошуку помилки в коді в Рython.
Видає else: invalid syntax
ТАВ після else не допомагає

Як виправити код?



Код:

from tkinter import *

def calculate():

start_num = int(start_entry.get())

end_num = scale.get()

if end_num < start_num:

result_entry.delete(0, END)

result_entry.insert(0, "Помилка: кінцеве число має бути більше початкового")

else:

count = 0

for i in range(start_num, end_num + 1):

if i % 3 == 0:

count += 1

result_entry.delete(0, END)

result_entry.insert(0, f"Кількість чисел: {count}")

window = Tk()

window.title("Кількість чисел, кратних 3")

# Текстове поле

start_label = Label(text="Початкове число:")

start_label.pack()

start_entry = Entry(width=10)

start_entry.pack()

# Шкала

scale = Scale(orient=HORIZONTAL, from_=1, to=100, length=200)

scale.pack()

# Кнопка

calculate_button = Button(text="Обчислити", command=calculate)

calculate_button.pack()

# Поле для виведення результату

result_label = Label(text="Результат:")

result_label.pack()

result_entry = Entry(width=10)

result_entry.pack()

window.mainloop()

Перейти к ответам

Ответы на вопрос

Отвечает Тюренкова Милена.

Помилка else: invalid syntax у вашому коді виникає через неправильні відступи (indentation).

У Python відступи мають дуже важливе значення. Вони визначають, які команди належать до функції, умови if, else або циклу for.

У вашому коді після оголошення функції def calculate(): усі її команди повинні мати відступ (зазвичай 4 пробіли). Так само потрібно правильно розставити відступи всередині умов і циклів.

Виправлений код

Спробуйте замінити свій код на цей:

Python
from tkinter import *
result_entry.delete(0, END)
result_entry.insert(0, f"Кількість чисел: {count}")


window = Tk()
window.title("Кількість чисел, кратних 3")

# Текстове поле
start_label = Label(text="Початкове число:")
start_label.pack()

start_entry = Entry(width=10)
start_entry.pack()

# Шкала
scale = Scale(orient=HORIZONTAL, from_=1, to=100, length=200)
scale.pack()

# Кнопка
calculate_button = Button(text="Обчислити", command=calculate)
calculate_button.pack()

# Поле для виведення результату
result_label = Label(text="Результат:")
result_label.pack()

result_entry = Entry(width=40)
result_entry.pack()

window.mainloop()

Що саме було виправлено?

  1. Відступи після def calculate(): — усі команди функції отримали відступ у 4 пробіли.

  2. Відступи після if та else — команди, які належать до цих блоків, розташовані на відповідному рівні.

  3. Відступи в циклі for — перевірка if i % 3 == 0 знаходиться всередині циклу.

  4. Виведення результату — команди result_entry.delete() та result_entry.insert() розташовані після циклу, але всередині else.

  5. Ширина поля результату — збільшена до 40 символів, щоб повідомлення про помилку повністю відображалося.

Чому виникла помилка саме на else?

У Python конструкція else повинна відповідати попередньому if і мати такий самий відступ.

Правильно:

Python
if умова:
команда_1
команда_2
else:
команда_3
команда_4

Неправильно:

Python
if умова:
команда_1
команда_2
else:
команда_3

Зверніть увагу: else не повинен мати додаткового відступу порівняно з if.

Важливо: використовуйте однакові відступи по всьому коду — найкраще 4 пробіли замість табуляції. Також перевірте, чи не змішані Tab і пробіли.

Після цих виправлень програма повинна запускатися без помилки else: invalid syntax і правильно рахувати кількість чисел, кратних 3, у заданому діапазоні.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос