Вопрос Проблема с котангенсом на python (ненавижу его)

Регистрация
11 Ноя 2013
Сообщения
78
Репутация
30
Спасибо
1
Монет
0
Этот котангенс меня уже замучил. Никак нимогу понять, откудо ошибки. Много вариантов писал, но каждый раз одна и тажа ошибка. Вообщем просмотрите код и пришлите где ошибка. Именно пришлите правильный вариант, а не просто пустой ответ!



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)}")

x1 += h

if minY > y:

minY = y

if maxY < y:

maxY = y
 
Проблема в строке 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
 
Ошибка в программе в строке 18:

if math.tan(x):

Переменная 'x' не определена, вместо неё должно быть 'x1', так как именно она существует в цикле while и вводится пользователем в строке 3. Также здесь необходимо добавить условие, чтобы избежать деления на ноль, например:

if math.tan(x1) != 0:
 
Из вашего кода явно не хватает импорта библиотеки 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
 
Назад
Сверху