Latest posts on Лотерея data time ошибка при 10000+ лет topichttps://python.su/forum/topic/41080/2022-01-07T00:26:03+02:00Общий :: Python для экспертов :: Лотерея data time ошибка при 10000+ лет
2022-01-07T00:26:03+02:00py.user.next220021<blockquote><em>dendonnar</em><br/>Только вы не учли одно но, существуют високосные года (те в которых не 365, а 366 дней)</blockquote>Так эти годы существуют в календаре, а не фактически. Фактический год - это оборот планеты вокруг её звезды. Так он ещё может и неконстантным быть, так как зависит от массы звезды и массы планеты. Так что бери вещественное значение (сколько суток в годе такой-то планеты в такой-то звёздной системе), дели на него, а потом округляй до целого.<br/>Понятие високосного года придумали для выравнивания календаря, который как раз и не учитывает точное количество суток в годе.
Общий :: Python для экспертов :: Лотерея data time ошибка при 10000+ лет
2022-01-06T16:09:22+02:00xam1816220013<blockquote><em>dendonnar</em><br/>Только вы не учли одно но, существуют високосные года (те в которых не 365, а 366 дней)</blockquote>возьмите среднее количество суток 365,2425
Общий :: Python для экспертов :: Лотерея data time ошибка при 10000+ лет
2022-01-06T15:32:44+02:00FishHook220012<blockquote><em>dendonnar</em><br/>Только вы не учли одно но, существуют високосные года </blockquote>Кто вам сказал, что нужно это учитывать? Вам надо выяснить склько лет длится процесс. Если вы используете календарь, то в зависимости от того, в какой конкретно день начнутся расчеты, вы получите разные результаты. Что лишено смысла. Не понимаете? А если в месяцах надо будет померить? Есть условный месяц = 30 дней, есть год = 365 дней. В этих единицах измеряют длительность. Если задача будет сформулирована таким образом “В какой календарный день закончатся расчеты, если их начать в 10:00 20-го мая 1936-го года”, тогда нам нужен будет календарь. <br/><br/><blockquote><em>dendonnar</em><br/>я решил все как было поставлено в задаче и комбинаторику не трогаем</blockquote><br/>да делайте вы что хотите<br/>Одного не понимаю, нафига вы вопросы задаете, если сами лучше знаете?<br/>
Общий :: Python для экспертов :: Лотерея data time ошибка при 10000+ лет
2022-01-06T15:19:55+02:00dendonnar220011Нет, я решил все как было поставлено в задаче и комбинаторику не трогаем. Только вы не учли одно но, существуют високосные года (те в которых не 365, а 366 дней) и вот как это посчитать на пару сотен тысячь дней? Вот для этого и импортировал datetime <img src="/static/djangobb_forum/img/smilies/smile.png" /><br/>Надеюсь все понятно описал <img src="/static/djangobb_forum/img/smilies/wink.png" /><br/><br/>Заранее спасибо!
Общий :: Python для экспертов :: Лотерея data time ошибка при 10000+ лет
2022-01-06T13:44:25+02:00FishHook220010<strong>dendonnar</strong><br/>Зачем вам вообще модуль datetime для столь простой арифметики? У вас есть количество дней. Поделите их на 365 - вуаля, количество лет.<br/>Ну и у меня такое чувство, что вы задачу в принципе неправильно решаете. Насколько я понял, вам нужно вычислить количество итерраций цикла для достижения некоторой комбинации методом перебора. И вы… перебираете. Это комбинаторика, вам надо не перебирать, вам надо посчитать по формуле. Ваша программа может вообще не завершится за время существования Вселенной - будет перебирать комбинации.
Общий :: Python для экспертов :: Лотерея data time ошибка при 10000+ лет
2022-01-06T13:25:00+02:00dendonnar220009Здравствуйте!<br/>Написал программу, которая предлагает выбрать 6 уникальных чисел от 1 до 49(прям как лотерея). Затем программа начинает делать то же самое, а именно подбирать 6 уникальных чисел от 1 до 49 до тех пор, пока комбинация юзера != комбинация компа. Для ясности 12, 23, 11, 1, 45, 37 == 23, 11, 1, 45, 12, 37 (порядок не имеет значения). Суть такова, что мы как бы должны посчитать количество дней/лет, которое программе понадобится, чтобы комбинации были одинаковыми (1 попытка = 1 день).<br/><br/>Импортировал в код datetime, чтобы уменьшить код и не париться, но проблема в том что когда количество лет превышает 10000, то выбивает ошибочку:<br/><br/>Traceback (most recent call last):<br/> File “C:\Users\Denys\Desktop\JiPP\Loteria.py”, line 17, in <module><br/> year_counter = datetime.datetime.now() + datetime.timedelta(days=days_counter)<br/>OverflowError: date value out of range <br/><br/>И тут все понятно, что просто превышено количество дней ( в случае этой библиотеки 9999+ )<br/><br/>Вот код:<br/><br/><div class="code"><pre>[code python]<br/><br/>import datetime<br/>import random<br/><br/>days_counter = 0<br/>choiced_user = list(map(int, input("Напиши 6 уникальных чисел от 1 до 49, разделив их пробелом:").split(' ')[:6]))<br/>choiced_user.sort()<br/>choiced_pc = ()<br/><br/>while choiced_pc != choiced_user:<br/><br/> choiced_pc = (random.sample(range(1, 50), 6))<br/> choiced_pc.sort()<br/> days_counter += 1<br/><br/>if choiced_pc == choiced_user:<br/><br/> year_counter = datetime.datetime.now() + datetime.timedelta(days=days_counter)<br/> print(choiced_user)<br/> print(choiced_pc)<br/> print("Количество дней:", days_counter)<br/> print("Ты бы выиграл в лотереи через:", year_counter, " лет")<br/><br/><br/>[/code]</pre></div>