Этот котангенс меня уже замучил. Никак нимогу понять, откудо ошибки. Много вариантов писал, но каждый раз одна и тажа ошибка. Вообщем просмотрите код и пришлите где ошибка. Именно пришлите правильный вариант, а не просто пустой ответ!
print("Котангенс"
while True:
x1 = input("Введите х1 "
if "," in str(x1):
print("Ошибка ввода! обнаружена запятая"
else:
x1 = float(x1)
break
while True:
x2 = input("Введите х2 "
if "," in str(x2):
print("Ошибка ввода! обнаружена запятая"
else:
x2 = float(x2)
break
while True:
h = input("Введите шаг "
if "," in str(h):
print("Ошибка ввода! обнаружена запятая"
else:
h = float(h)
break
minY = math.tan(x1)
maxY = math.tan(x1)
while x1 <= x2:
# if x1 in x1 >= x2:
# x1, x2 = x2, x1
if math.tan(x):
ctg = 1 / tan(x)
y = ctg(x1)
print(f"В точке {x1} (ctg) равен {round(y, 2)}"
Проблема в строке if math.tan(x):. Вы используете переменную x, которая не была определена ранее. Вероятно, вы хотели написать if math.tan(x1):.
Также вам нужно импортировать модуль math, чтобы использовать функцию tan. Добавьте import math в начало вашего кода.
И еще одна ошибка в строках, которые вы закомментировали:
python
Copy code
# if x1 in x1 >= x2:
# x1, x2 = x2, x1
Закомментированный код не имеет смысла. Если вы хотите поменять местами x1 и x2, просто добавьте следующую строку перед циклом while:
if x1 > x2:
x1, x2 = x2, x1
Вот исправленный код с комментариями:
import math # импортируем модуль math
print("Котангенс"
while True:
x1 = input("Введите х1 "
if "," in str(x1):
print("Ошибка ввода! обнаружена запятая"
else:
x1 = float(x1)
break
while True:
x2 = input("Введите х2 "
if "," in str(x2):
print("Ошибка ввода! обнаружена запятая"
else:
x2 = float(x2)
break
while True:
h = input("Введите шаг "
if "," in str(h):
print("Ошибка ввода! обнаружена запятая"
else:
h = float(h)
break
minY = math.tan(x1)
maxY = math.tan(x1)
if x1 > x2:
x1, x2 = x2, x1 # меняем местами x1 и x2, если нужно
while x1 <= x2:
if math.tan(x1): # здесь нужно использовать x1, а не x
ctg = 1 / math.tan(x1)
y = ctg
print(f"В точке {x1} (ctg) равен {round(y, 2)}"
if minY > y:
minY = y
if maxY < y:
maxY = y
x1 += h
Переменная 'x' не определена, вместо неё должно быть 'x1', так как именно она существует в цикле while и вводится пользователем в строке 3. Также здесь необходимо добавить условие, чтобы избежать деления на ноль, например:
Из вашего кода явно не хватает импорта библиотеки math, поэтому нужно добавить следующую строку в начале вашего кода:
import math Также в цикле while x1 <= x2: есть ошибки. Необходимо заменить if math.tan(x): на if math.tan(x1): и добавить переменную x перед ctg = 1 / tan(x1). Также вы должны определить x равным x1.
Вот исправленный код: import math
print("Котангенс")
while True:
x1 = input("Введите х1 ")
if "," in str(x1):
print("Ошибка ввода! обнаружена запятая")
else:
x1 = float(x1)
break
while True:
x2 = input("Введите х2 ")
if "," in str(x2):
print("Ошибка ввода! обнаружена запятая")
else:
x2 = float(x2)
break
while True:
h = input("Введите шаг ")
if "," in str(h):
print("Ошибка ввода! обнаружена запятая")
else:
h = float(h)
break
minY = math.tan(x1)
maxY = math.tan(x1)
x = x1
while x y:
minY = y
if maxY < y:
maxY = y
x += h