Dimaskus
Фев. 17, 2010 20:30:06
Доброго времени суток :)
Совсем не давно я решил начать осваивать питон, ну и сел за мануалы.
И вот через некоторое время чтения и попутных опытов на компиляторе, решил задать себе задачу.
Суть ее заключалась в решении функции: (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
Ну раз не получается на прямую, значит буду делать все это через дополнительные переменные, подумал я и начал, и опять сел в лужу с теми же результатами….
Подскажите пожалуйста: как правильно выполнить эту задачу?
o7412369815963
Фев. 17, 2010 20:44:06
>>>tan_a = sin(a)/cos(a)
>>>tan_b = sin(b)/cos(b)
>>>print (tan_a + tan_b)/(tan_a*tan_b)
нужн озадать а и б.
это для питона 2.х
Dimaskus
Фев. 17, 2010 20:59:07
Спасибо, но вы меня не много не поняли…
вот стандартна формула: tg(a) = sin(a)/cos(a), у меня есть значение sin(a) = 45 и cos(a) = 30, данные взяты мной наобум…
Так как мне присвоить значение 45 градусов sin(a) и тех же 30 соответственно cos(a)?
tvaleev
Фев. 17, 2010 22:40:22
Так вы инициализируйте вначале a и b….Значения навероне надо искать sin(45)….насколько я школьную программу помню)))
o7412369815963
Фев. 18, 2010 05:24:12
Dimaskus
Так как мне присвоить значение 45 градусов sin(a) и тех же 30 соответственно cos(a)?
никак
vaxXxa
Фев. 19, 2010 02:36:12
Dimaskus, Вы наверное немного недопоняли суть функций. Функция принимает значение (иногда) и выдает значения… Ну, как и в математике… Следующий код описывает новую ф-цию my_tan(), которая принимает аргумент(угол) и считает деление синуса этого угла на косинус этого же угла:
import math
def my_tan(a):
rezultat = math.sin(a)/math.cos(a)
return rezultat
Zayaz
Фев. 21, 2010 22:00:04
Братцы я может быть чего-то недопонимаю, но я глянул таблицу Брадиса и не понял либо ни син ни кос таких значений принимать не могут, либо если автор имеет в виду 30 и 45 это угол в град, то и у син и у кос значение должно быть одно либо 30 либо 45 либо какое другое…
(конструктивная критика приветствуется, готов признать что не прав…)
Ferroman
Фев. 21, 2010 22:51:01
Конечно не могут. Эти значения вообще не могут быть больше единицы. Могут быть косинус/синус для угла в 30 или 45 градусов.
Zayaz
Фев. 22, 2010 08:47:57
Если я правильно понял задачу, то код примерно такой:
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 код рабочий, только коменты надо убрать
UsCr
Фев. 22, 2010 17:12:38
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
2.6 код рабочий. Комментарии можно не убирать.