Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 1 / 0
Регистрация: 24.11.2020
Сообщений: 138

Оптическая система

31.03.2022, 09:09. Показов 2171. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите класс OpticSystem, в котором содержится список тонких линз, в списке находятся значения их оптических сил.
Нужно реализовать специальные методы: итерирования, получение элемента, удаления элемента, изменения и вставки, получения длины.
Также реализуйте методы сравнения. Сравниваются сначала по оптической силе, затем по количеству элементов в списке.
Реализуйте метод add, списки складываются и возвращается новый объект. iadd – изменяется исходный список.
Экземпляр, будучи вызван с аргументом – расстоянием предмета до оптической системы, возвращает расстояние до изображения, полученное по формуле тонкой линзы, с округлением до 4 знаков. Предусмотрите невозможность деления на 0, в этом случае нужно возвращать None.
При сдвиге вправо на n все линзы циклически передвигаются на такое количество позиций, при сдвиге влево – сдвигаются циклически влево.

Пример 1
Ввод Вывод
from solution import OpticSystem

os_1 = OpticSystem([1, 2.5, 3])
os_2 = OpticSystem([4, 2.5])
print(os_2 > os_1)
print(os_1(0.4))
for i in range(len(os_1)):
print(os_1[i], end=' ')
print()
os_2.append(-1)
os_1[0] = 0
print(os_1 == os_2)
False
0.25
1 2.5 3
True
Пример 2
Ввод Вывод
from solution import OpticSystem

arr = [0.5, -3, 2.8, -1.7]
os_1 = OpticSystem(arr)
os_1.append(2.3)
print(*os_1)
os_1 >> 2
print(*os_1)
os_2 = OpticSystem([3, 2.5, 1])
os_2 += OpticSystem([-1.5])
print(os_2 < os_1)
print(*os_2)
os_2 << 15
print(*os_2)
0.5 -3 2.8 -1.7 2.3
-1.7 2.3 0.5 -3 2.8
False
3 2.5 1 -1.5
-1.5 3 2.5 1
Примечания
Считайте, что все линзы тонкие, то есть места не занимают, их толщиной можно пренебречь.
Формула тонкой линзы:
D
=
1
d
+
1
f

где D – оптическая сила линзы,
d – расстояние от предмета до линзы,
f – расстояние от линзы до изображения.
Оптическая сила системы линз равна сумме оптических сил всех линз, входящих в систему.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.03.2022, 09:09
Ответы с готовыми решениями:

Оптическая система
Напишите класс OpticSystem, в котором содержится список тонких линз, в списке находятся значения их оптических сил. Нужно реализовать...

Оптическая система
Напишите класс OpticSystem, в котором содержится список тонких линз, в списке находятся значения их оптических сил. Нужно реализовать...

Оптическая система
Напишите класс OpticSystem, в котором содержится список тонких линз, в списке находятся значения их оптических сил. Нужно реализовать...

1
712 / 351 / 120
Регистрация: 09.12.2020
Сообщений: 918
01.04.2022, 17:32
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def equally(self, other):
    return sum(self.lenses) == sum(other.lenses) and len(self.lenses) == len(other.lenses)
 
 
def more(self, other):
    return True if (sum(self) if self else 0) > (sum(other) if self else 0) or (
                (sum(self) if self else 0) == (sum(other) if other else 0) and len(self) > len(other)) else False
 
 
def less(self, other):
    return True if (sum(self) if self else 0) < (sum(other) if self else 0) or (
            (sum(self) if self.lenses else 0) == (sum(other) if other else 0) and len(self) < len(other)) else False
 
 
class OpticSystem:
    def __init__(self, lenses):
        self.lenses = [] + lenses
 
    def append(self, value):
        self.lenses.append(value)
 
    def __iter__(self):
        return iter(self.lenses)
 
    def __getitem__(self, item):
        return self.lenses[item]
 
    def __delitem__(self, key):
        del self.lenses[key]
 
    def __setitem__(self, m, value):
        self.lenses[m] = value
 
    def __len__(self):
        return len(self.lenses)
 
    def __add__(self, other):
        return OpticSystem(self.lenses + other.lenses)
 
    def __iadd__(self, other):
        self.lenses += other.lenses
        return self
 
    def __call__(self, d):
        ds = sum(self.lenses)
        if ds * d != 1:
            return round(d / (d * ds - 1), 4)
 
    def __eq__(self, other):
        return equally(self, other)
 
    def __ne__(self, other):
        return not equally(self, other)
 
    def __lt__(self, other):
        return less(self, other)
 
    def __gt__(self, other):
        return more(self, other)
 
    def __le__(self, other):
        return less(self, other) or equally(self, other)
 
    def __ge__(self, other):
        return more(self, other) or equally(self, other)
 
    def __lshift__(self, other):
        for _ in range(other):
            self.lenses.append(self.lenses.pop(0))
 
    def __rshift__(self, n):
        for _ in range(n):
            self.lenses.insert(0, self.lenses.pop(-1))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.04.2022, 17:32
Помогаю со студенческими работами здесь

Оптическая система с максимальным хроматизмом положения для линий F' и C'
Рассчитать (предложить вариант) оптической системы с максимальным хроматизмом положения для линий F' и C' и исправленной сферической...

Какая оптическая система может реализовать свёртку двух и более функций?
Дано. Речь идёт о свёртке набора прямоугольных импульсов разных ширин. ...

Оптическая мышь.
Хотелось бы организовать датчик вращения колеса совместно с инкрементным энкодером, для высокой точности на малой скорости вращения. И...

Оптическая мышка 8*8
Помогите доработать программу. Совсем чуть-чуть осталось. Мене надо подать туда число (или указатель на него), и в классе уже сравнивать...

Оптическая схема монохроматора
Доброго времени суток, подскажите, или киньте плиз ссылку, что представляет из себя оптическая схема монохроматора? PS гуглил, ничего...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru