Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2010 20:30:06

Dimaskus
От:
Зарегистрирован: 2010-02-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

Доброго времени суток :)
Совсем не давно я решил начать осваивать питон, ну и сел за мануалы.
И вот через некоторое время чтения и попутных опытов на компиляторе, решил задать себе задачу.
Суть ее заключалась в решении функции: (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
Ну раз не получается на прямую, значит буду делать все это через дополнительные переменные, подумал я и начал, и опять сел в лужу с теми же результатами….
Подскажите пожалуйста: как правильно выполнить эту задачу?



Офлайн

#2 Фев. 17, 2010 20:44:06

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Функции

>>>tan_a = sin(a)/cos(a)
>>>tan_b = sin(b)/cos(b)
>>>print (tan_a + tan_b)/(tan_a*tan_b)
нужн озадать а и б.
это для питона 2.х

Отредактировано (Фев. 17, 2010 20:45:03)

Офлайн

#3 Фев. 17, 2010 20:59:07

Dimaskus
От:
Зарегистрирован: 2010-02-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

Спасибо, но вы меня не много не поняли…
вот стандартна формула: tg(a) = sin(a)/cos(a), у меня есть значение sin(a) = 45 и cos(a) = 30, данные взяты мной наобум…
Так как мне присвоить значение 45 градусов sin(a) и тех же 30 соответственно cos(a)?



Офлайн

#4 Фев. 17, 2010 22:40:22

tvaleev
От:
Зарегистрирован: 2010-02-16
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

Так вы инициализируйте вначале a и b….Значения навероне надо искать sin(45)….насколько я школьную программу помню)))



Офлайн

#5 Фев. 18, 2010 05:24:12

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Функции

Dimaskus
Так как мне присвоить значение 45 градусов sin(a) и тех же 30 соответственно cos(a)?
никак

Офлайн

#6 Фев. 19, 2010 02:36:12

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

Dimaskus, Вы наверное немного недопоняли суть функций. Функция принимает значение (иногда) и выдает значения… Ну, как и в математике… Следующий код описывает новую ф-цию my_tan(), которая принимает аргумент(угол) и считает деление синуса этого угла на косинус этого же угла:

import math

def my_tan(a):
rezultat = math.sin(a)/math.cos(a)
return rezultat



Офлайн

#7 Фев. 21, 2010 22:00:04

Zayaz
От:
Зарегистрирован: 2010-02-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

Братцы я может быть чего-то недопонимаю, но я глянул таблицу Брадиса и не понял либо ни син ни кос таких значений принимать не могут, либо если автор имеет в виду 30 и 45 это угол в град, то и у син и у кос значение должно быть одно либо 30 либо 45 либо какое другое…
(конструктивная критика приветствуется, готов признать что не прав…)



Офлайн

#8 Фев. 21, 2010 22:51:01

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Функции

Конечно не могут. Эти значения вообще не могут быть больше единицы. Могут быть косинус/синус для угла в 30 или 45 градусов.

Офлайн

#9 Фев. 22, 2010 08:47:57

Zayaz
От:
Зарегистрирован: 2010-02-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

Если я правильно понял задачу, то код примерно такой:

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 код рабочий, только коменты надо убрать



Офлайн

#10 Фев. 22, 2010 17:12:38

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции

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 код рабочий. Комментарии можно не убирать.



Отредактировано (Фев. 22, 2010 17:14:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version