Форум сайта python.su
Доброго времени суток :)
Совсем не давно я решил начать осваивать питон, ну и сел за мануалы.
И вот через некоторое время чтения и попутных опытов на компиляторе, решил задать себе задачу.
Суть ее заключалась в решении функции: (tan(a) + tan(b))/(tan(a)*tan(b)) при условии что мне известны: sin(a), sin(b), cos(a), cos(b).
Принялся я выполнять, и вот на чем запнулся:
>>>from Numeric import sin, cos, tan
>>>sin(a) = 45
>>>cos(a) = 30
>>>sin(b) = 30
>>>cos(b) = 45
>>>tan(a) = sin(a)/cos(a)
>>>tan(b) = sin(b)/cos(b)
>>>print (tan(a) + tan(b))/(tan(a)*tan(b))
(это все я накидал себе на бумаге) Но в компиляторе у мня уже на втором шаге был ступор, значение ни синусу, ни косинусу не присваивалось на прямую, так же я не могу присвоить tan(a) = sin(a)/cos(a)
На все это я получаю только один ответ: File “<stdin>”, line 1
SyntaxError: can't assign to function call
Ну раз не получается на прямую, значит буду делать все это через дополнительные переменные, подумал я и начал, и опять сел в лужу с теми же результатами….
Подскажите пожалуйста: как правильно выполнить эту задачу?
Офлайн
>>>tan_a = sin(a)/cos(a)
>>>tan_b = sin(b)/cos(b)
>>>print (tan_a + tan_b)/(tan_a*tan_b)
Отредактировано (Фев. 17, 2010 20:45:03)
Офлайн
Спасибо, но вы меня не много не поняли…
вот стандартна формула: tg(a) = sin(a)/cos(a), у меня есть значение sin(a) = 45 и cos(a) = 30, данные взяты мной наобум…
Так как мне присвоить значение 45 градусов sin(a) и тех же 30 соответственно cos(a)?
Офлайн
Так вы инициализируйте вначале a и b….Значения навероне надо искать sin(45)….насколько я школьную программу помню)))
Офлайн
Dimaskusникак
Так как мне присвоить значение 45 градусов sin(a) и тех же 30 соответственно cos(a)?
Офлайн
Dimaskus, Вы наверное немного недопоняли суть функций. Функция принимает значение (иногда) и выдает значения… Ну, как и в математике… Следующий код описывает новую ф-цию my_tan(), которая принимает аргумент(угол) и считает деление синуса этого угла на косинус этого же угла:
import math
def my_tan(a):
rezultat = math.sin(a)/math.cos(a)
return rezultat
Офлайн
Братцы я может быть чего-то недопонимаю, но я глянул таблицу Брадиса и не понял либо ни син ни кос таких значений принимать не могут, либо если автор имеет в виду 30 и 45 это угол в град, то и у син и у кос значение должно быть одно либо 30 либо 45 либо какое другое…
(конструктивная критика приветствуется, готов признать что не прав…)
Офлайн
Конечно не могут. Эти значения вообще не могут быть больше единицы. Могут быть косинус/синус для угла в 30 или 45 градусов.
Офлайн
Если я правильно понял задачу, то код примерно такой:
print ‘vvedite ugol’
a=float(raw_input())
#сюда надо ввести число от 0 до 90 невключительно
#здесь поидее должен стоять блок, проверяющий что ввел пользователь
#и если он ввел что-то не то, то либо дать ему шанс исправиться,
# (вернуть в начало),либо послать его нах (exit)
import math #загружаем математический модуль тригонометрических функций
angle=a*math.pi
angle=angle/180
#Этими 2-мя строчками переводим углы в радианы
x=(math.sin(angle))
y=(math.cos(angle))
z=(math.tan(angle))
print ‘sinus ugla=’,x
print ‘cosinus ugla=’,y
print ‘tangens ugla=’,z
#здесь было бы не плохо спросить у чувака не надо ли посчитать что-нибудь еще
#и если надо, то в начало, если нет, то на выход (с вещами) :)
Если бы кто дополнил блоком проверки и блоком последнего вопроса - я бы с интересом ознакомился…
Python 2.6.4 код рабочий, только коменты надо убрать
Офлайн
ZayazЯ придумал вот так:
Если бы кто дополнил блоком проверки и блоком последнего вопроса - я бы с интересом ознакомился…
# -*- coding: cp1251 -*-
import math
def inp():
while True:
inp = raw_input("Введите значение угла:")
if float(inp)<=0 or float(inp)>=90:
print "Значение угла лежит в интервале (0,90)"
else: break
return float(inp)
def ugol():
angle = (inp()*math.pi)/180
#Тут переводим углы в радианы
x=(math.sin(angle))
y=(math.cos(angle))
z=(math.tan(angle))
return x,y,z
def outpu():
a,b,c = ugol()
print " Синус вот-"+str(a)+" Вот косинус-"+str(b)+" А это тангенс-"+str(c)
print "Пора посчитать!"
outpu()
while True:
more = raw_input("Посчитаем ещё? (Y-да, [Enter]-выход)")
if more:
outpu()
else:
break
Отредактировано (Фев. 22, 2010 17:14:20)
Офлайн