Срабатывают две ветки сразу (Python)
Написал множество веток, на что и одна срабатывает, и другая. Допустим: написал площадь квадрата, а он мне выдает про площадь прямоугольника (код не доделал, мучаюсь долго с проблемой)
print("Введите раздел")
rasdel = input()
if rasdel == "Геометрия" or "геометрия":
print("Напишите, что вас интересует")
geometry_type = input()
if geometry_type == "Средняя линия треугольника":
print("Введи основание треугольника")
osnovaniye_treugolnika = int(input())
result = osnovaniye_treugolnika / 2
print("Ответ: ", result)
elif geometry_type == "Средняя линия трапеции":
print("Введи основания трапеции (сначала меньшую длину)")
osnovaniye_trapezii = int(input())
osnovaniye_trapezii2 = int(input())
result = (osnovaniye_trapezii + osnovaniye_trapezii2) / 2
print("Ответ: ", result)
elif geometry_type == "Площадь параллелограмма" or "площадь параллелограмма":
print("С косинусом? Ответ да или нет")
otvet = input()
if otvet == "Нет" or "нет":
print("Вводи основание и высоту")
a = int(input())
h = int(input())
result = a * h
print(result)
elif geometry_type == "Площадь квадрата" or "площадь квадрата":
print("Введите сторону")
a = int(input())
a *= a
print(a)
elif geometry_type == "Площадь прямоугольника" or "площадь прямоугольника":
type = 5
elif geometry_type == "Площадь ромба" or "площадь ромба":
type = 6
elif geometry_type == "Площадь трапеции" or "площадь ромба":
type = 7
elif geometry_type == "Теорема Пифагора" or "теорема пифагора" or "пифагор":
type = 8
elif geometry_type == "Таблица":
type = 9
elif geometry_type == "Основное тригонометрическое тоджество" or "тоджество":
type = 10
elif geometry_type == "Длина окружности" or "длина окружности":
type = 11
elif geometry_type == "Площадь круга":
type = 12
Ответы (2 шт):
if rasdel == "Геометрия" or "геометрия":
Условие в данном случае написано с ошибкой
В вашем случае у условия должна быть левая и правая часть, а между ними должен быть знак
**if rasdel** == "Геометрия" - Тут всё верно
or "геометрия": - А тут проблемы
Проблемы потому что у условия нет левой части и код не знает, чему должно быть равно это слово.
Т.к. для Python любая непустая строка - это истина - данное условие будет срабатывать всегда.
Один из правильных вариантов:
if rasdel == "Геометрия" or rasdel == "геометрия":
P.S. Тут тоже проблема, поправьте самостоятельно)
elif geometry_type == "Основное тригонометрическое тоджество" or "тоджество":
P.P.S Не забывайте про отступы. Таким образом вы показываете, какие строчки кода выполняются, если условие срабатывает
Неправильно::
if rasdel == "Геометрия" or "геометрия":
print("Напишите, что вас интересует")
geometry_type = input()
Правильно::
if rasdel == "Геометрия" or rasdel == "геометрия":
print("Напишите, что вас интересует")
geometry_type = input()
P.P.P.S)
Чтобы каждый раз не проверять комбинации с регистром, можно строку, которую ввёл пользователь, привести к нижнему/верхнему регистру с помощью методов .lower() или .upper()
print("Введите раздел")
rasdel = input().lower() # Теперь все буквы в нижнем регистре
if rasdel == "геометрия": # Можно сравнивать только с одной строкой, которая состоит из маленьких букв
Вот это вот работать как вы задумали не будет:
if rasdel == "Геометрия" or "геометрия"
Стоит писать:
if rasdel == "Геометрия" or rasdel == "геометрия"
или
if rasdel in ("Геометрия", "геометрия")
но самый правильный:
if rasdel.lower() == "геометрия"