Pull to refresh
14
0

Программист

Send message

Изначально в задаче спрашивается, есть ли разница в вероятности при смене двери или нет, т.е. мы говорим об условной вероятности. Поскольку вы в первом эксперименте это условие разыгрываете с вероятностью 50%, то и на выходе у вас результат неправильный. А вот на втором изображении как раз "реальный результат" - поскольку мы обычно расцениваем вероятности с точки зрения того, что произойдёт, если игрок всегда будет придерживаться целевой стратегии.

Если взять, например, рулетку, то вероятность выиграть при ставке на красное чуть меньше 50%. С вашим подходом игрок бы случайным образом ставил на позиции по всему полю, и вероятность выигрыша была бы существенно меньше.

Если хочется всё-таки написать что-то своё, то есть несколько замечаний:


1) Не смотрели в сторону ThreadPoolExecutor? Вручную управлять полноценными потоками — неблагодарное занятие, довольно много граблей. Должно упростить код и избавить от некоторых проблем, которые могут внезапно сейчас возникнуть (например, глобальный доступ всех потоков к переменной thread_count, еще и каждый поток её менять может*)


2) Так как у вас написана обёртка FTP, вы не сможете её использовать как контекстный менеджер. Это в целом еще ладно, но с таким подходом надо следить за правильным закрытием клиента — например, если при получении файла вылетит любая ошибка, кроме error_perm


3) Обычно принято называть методы get_* тогда, когда они что-нибудь да возвращают. В целом, логичнее было бы его вообще спрятать внутри класса, и вызывать только при вызове get_next_file (который можно сделать генератором)


* Не используйте __del__, по возможности, никогда. Вы не контролируете момент, когда обьект будет удаляться.

Что бы так писать, нужно ну очень сильно не любить ключевые слова if/else. Но — так работает, согласен.

Не работает как тернарный оператор:


(download_huge_file(), sys.exit(1))[not os.file.exists(...) and input("Файл не найден. Скачать?") == "yes"]

Хотя даже если знать о том, что будут выполняться обе ветки выражения (до выполнения условия!), и использовать как в посте — для возврата правильного значения, будут созданы лишние обьекты.

Было бы также интересно попробовать решить задачу с хвостовой рекурсией, и сравнить с двумя приведёнными вариантами. Я не сильно знаком со Swift, но, поскольку он основан на LLVM, ожидал бы, что TCO поддерживается. Также это должно решить проблему с недостатком ресурсов компьютера.

Не смотрели в сторону PureWindowsPath ?


If you want to manipulate Windows paths on a Unix machine (or vice versa). You cannot instantiate a WindowsPath when running on Unix, but you can instantiate PureWindowsPath.

Есть некоторые ограничения по API, но звучат они вполне резонно.


Regardless of the system you’re running on, you can instantiate all of these classes, since they don’t provide any operation that does system calls.
И вариант c джойном ../.././.././../ его случайно пропустили?

Простите, не понял, какого примера это должно касаться

Раньше ведь тоже были подобные решения в сторонних библиотеках, так что сложно назвать это внезапным озарением. Просто вписывание такого подхода в стандартную либу — примерно аналогичный процесс был для asyncio, например.

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity