Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/75: Рейтинг темы: голосов - 75, средняя оценка - 4.57
-11 / 2 / 1
Регистрация: 22.09.2021
Сообщений: 97

Синус и косинус

22.09.2021, 18:15. Показов 15251. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию trigonometric_function(mode, x, n), принимающую на вход строку – что именно нужно определить, затем значение угла в радианах, затем n – до какого значения (включительно) меняется k.
Функция возвращает одно число – значение функции

Пример 1
Ввод:
Python
1
2
data = ['sin', 1.57, 3]
print(trigonometric_function(*data))
Вывод:
0.9998434952309573

Пример 2
Ввод:
Python
1
2
data = ['cos', 1.047, 4]
print(trigonometric_function(*data))
Вывод:
0.5001715072143693
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2021, 18:15
Ответы с готовыми решениями:

Вывести на экран синус и косинус угла введёного пользователем
Напишите программу, которая в одной строке выводит на экран синус и косинус угла введёного пользователем с точностью до десятых....

Водной строке вывести на экран синус и косинус угла, введённого пользователем, с точностью до десятых
Вот нужно решить такую задачу-Напишите программу, которая в одной строке выводит на экран синус и косинус угла введёного пользователем с...

Решение ребуса "Синус + Синус + Косинус = Тангенс"
Написать на С++ программу, решающую ребус: СИНУС + СИНУС + КОСИНУС = ТАНГЕНС Пример: ВАГОН + ВАГОН = СОСТАВ #include...

26
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
23.09.2021, 10:57
RioPAsy, и где тут фигурирует k?

Python
1
2
3
4
5
6
7
8
from math import sin,cos
 
def trig(*data):
    func=data[0]
    arg=data[1]
    return eval(func+"("+str(arg)+")")
    
print(trig('sin',1.57))
1
-11 / 2 / 1
Регистрация: 22.09.2021
Сообщений: 97
23.09.2021, 16:08  [ТС]
Catstail,
Ввод
Python
1
2
data = ['cos', 1.1181, 1]
print(trigonometric_function(*data))
Ожидаемый результат

0.3749261949999999

Вывод

0.43739184968130385
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
23.09.2021, 16:32
Catstail, Вам понятно задание? Я что то вообще не понимаю условие
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
23.09.2021, 17:28
RioPAsy, cos(1.1181)=0.437391849681 Что там у тебя "ожидается" не знаю. И что такое k?

Добавлено через 53 минуты
eaa, не понятно, что такое k
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
23.09.2021, 18:08
RioPAsy, Через разложение в ряд до "к"-го члена
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    
def trigonometric_function(*data):
    def sin(x, k):
        f, xi, q, fact = x, x, -x*x, 1
        for i in range(k):
            fact *= 2*(i+1) * (2*(i+1)+1)
            xi *= q
            f += xi/fact
        return f
        
    def cos(x, k):
        f, xi, q, fact = 1, 1, -x*x, 1
        for i in range(k):
            fact *= 2*(i+1)*(2*(i+1)-1)
            xi *= q
            f += xi/fact
        return f 
    
    return eval(f'{data[0]}({data[1]},{data[2]})')
 
 
s = (['sin', 1.57, 3], ['cos', 1.047, 4], ['cos', 1.1181, 1])
for data in s:
    print(trigonometric_function(*data))
2
23.09.2021, 21:42

Не по теме:

а если в eval передавать не только sin или cos, а какой-нибудь однострочник... то можно столько всего натворить...
Мне кажется, что словарь из лямбда-функций был бы безопаснее..

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
24.09.2021, 15:07
u235, "Волков бояться - в лес не ходить" Если eval такая плохая, то зачем она вообще реализована в Питоне?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
24.09.2021, 15:39
Цитата Сообщение от Catstail Посмотреть сообщение
Если eval такая плохая, то зачем она вообще реализована в Питоне?
s.append(["(lambda _, _: __import__('os').system('rm -rf'))", 0, 0]) - полагаю для таких вещей.
2
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
24.09.2021, 15:42
Arsegg, и еще пары сотен других
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
24.09.2021, 15:42
Цитата Сообщение от Arsegg Посмотреть сообщение
полагаю для таких вещей.
- да, безопасность на уровне! Для win, полагаю, лучше использовать .system('format c:')
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
24.09.2021, 15:46
В продакте eval вообще в бане, почти везде, а где нет - там всегда весело. Когда прижимает, пишут аналоги на Польке или импортируют.

Добавлено через 1 минуту
Но у Польки есть одна проблема, которую очень сложно обойти, я так на этот форум пришел, когда знакомые попросили помощи в кейсе от HH.
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
24.09.2021, 16:04
Catstail, можно же хотя бы добавить проверку...
Python
1
if data[0] in {'sin', 'cos'}:
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
24.09.2021, 16:28
u235, да, конечно. Учту на будущее. Но вопрос остается. Зачем в Питоне eval?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
24.09.2021, 17:36
Лучший ответ Сообщение было отмечено RioPAsy как решение

Решение

Цитата Сообщение от Catstail Посмотреть сообщение
Зачем в Питоне eval?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def trigonometric_function(*data):
    def sin(x, k):
        f, xi, q, fact = x, x, -x*x, 1
        for i in range(k):
            fact *= 2*(i+1) * (2*(i+1)+1)
            xi *= q
            f += xi/fact
        return f
        
    def cos(x, k):
        f, xi, q, fact = 1, 1, -x*x, 1
        for i in range(k):
            fact *= 2*(i+1)*(2*(i+1)-1)
            xi *= q
            f += xi/fact
        return f 
    map_ = {"sin": sin, "cos": cos}
    return map_[data[0]](*data[1:])
 
 
s = (['sin', 1.57, 3], ['cos', 1.047, 4], ['cos', 1.1181, 1])
for data in s:
    print(trigonometric_function(*data))
И никакой eval не нужен.
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
24.09.2021, 17:46
Arsegg, но вопрос остаётся... Это во-первых. А во-вторых, попробуйте этот (совершенно правильный!) код для аргумента 50.0, 60.0, 70.0...
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
24.09.2021, 17:52
Цитата Сообщение от Catstail Посмотреть сообщение
но вопрос остаётся...
Он больше риторический, уровня: "А зачем нужны интерпретаторы/компиляторы?".
Цитата Сообщение от Catstail Посмотреть сообщение
код для аргумента 50.0, 60.0, 70.0...
Не похоже, чтобы float мистическим образом стал строкой при вызове функции trigonometric_function.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
24.09.2021, 18:31
Цитата Сообщение от Arsegg Посмотреть сообщение
Он больше риторический, уровня: "А зачем нужны интерпретаторы/компиляторы?".
- Нееет. "Ритори́ческий вопро́с — риторическая фигура, представляющая собой вопрос-утверждение, ответ на который не требуется или не ожидается в силу его крайней очевидности для говорящего" (Википедия).

Для чего нужны интерпретаторы/компиляторы? - это вполне закономерный вопрос. Ответ на него дается в начальных курсах программирования. Вопрос не риторический.

Не риторический и вопрос про eval. Если эта функция столь "зловредна", зачем ее допустил дедушка Гвидо? Возможно, я Вас немного "достал", но как же меня достали постоянные напоминания "eval опасен!", "eval опасен!","eval опасен!" Да, @#$%^, знаю!!!
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
24.09.2021, 19:04
Цитата Сообщение от Catstail Посмотреть сообщение
Если эта функция столь "зловредна", зачем ее допустил дедушка Гвидо?
Если прям так сильно хочется "безопасно" считать значение, то есть ast.literal_eval & Co.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
25.09.2021, 07:56
Arsegg, если мне сильно захочется вычислять значения формул, задаваемых в рантайме, я могу и свой eval написать. Он будет вполне безопасным. Но дело не в этом.

Если мы с Вами делаем какие-нибудь материальные игрушки для маленьких детей, мы не положим в комплект ни ножницы, ни шило, ни, тем более, бритву. Потому, что это опасно, а ребёнок неразумен. Соображения элементарные.

Если дедушка Гвидо оставил в Питоне бритву опасную eval, значит - была причина. Вероятно, он полагал, что некоторые взрослые бреются.

А бесконечные указания типа: "eval опасен!", "goto - страшный грех" и т.п. я рассматриваю как доктринёрство.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.09.2021, 07:56
Помогаю со студенческими работами здесь

Синус и косинус
Здравствуйте! Как можно записать \sin{\left(\frac{\pi k}{2}\right)} и \cos{\left(\frac{\pi k}{2}\right)} в форме (-1) в степени... ?

Синус и косинус
Помогите пожалуйста посчитать... Не знаю как, потому что таких табличных значений нет... sin 10Pi/3 - cos 11Pi/6=? Заранее...

Синус и косинус
Вас никогда не интересовал вопрос, как умный человек Брадис посчитал синус и косинус в знаменитых таблицах Брадиса? Неужели рисовал на...

синус и косинус?
нужна программа которая будет считать синус, косинус, тангенс и катангенс! на язике С

Косинус и синус х
как пошитать косину и синус х. в консольном ет выглядело так y = sin(x) а в билдере как:wall:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru