ru_python_beginners | Unsorted

Telegram-канал ru_python_beginners - Python beginners

14446

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981

Subscribe to a channel

Python beginners

Стоило всего лишь обновить зависимости

Читать полностью…

Python beginners

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

Читать полностью…

Python beginners

да не надо вроде, скажи что пип выдал

Читать полностью…

Python beginners

если окажется, что ты сам себе версию запинил, то война с ветренными мельницами была успешной

Читать полностью…

Python beginners

тебе пип скажет, есть конфликт или нет

Читать полностью…

Python beginners

То есть зависимость доп в поетри добавить в виде пайлантика более нового

Читать полностью…

Python beginners

Если вы не будет против скрина компа, смогу

Читать полностью…

Python beginners

Aiogram dialog пока 14 питон не поддеживает , все верно?

Читать полностью…

Python beginners

Только скорее всего дешевле, ибо нафиг нам все варианты знать...

Читать полностью…

Python beginners

решение чуть костыльное и скорее всего можно и даже нужно лучше, но просто чтобы осознать чо такое динамическое программирование -- пойдодёт

а чтобы решить оригинальную задачу, когда монетки конечные и их разное количество, то надо немного подумать

Читать полностью…

Python beginners

покрывает вроде как все варианты


def give_money(N, x1, n1, x2, n2, x3, n3):
for c1 in range(min(x1, N // n1), -1, -1):
r1 = N - c1 * n1

for c2 in range(min(x2, r1 // n2), -1, -1):
r2 = r1 - c2 * n2

if r2 % n3 == 0:
c3 = r2 // n3
if c3 <= x3:
return [c1, c2, c3]
return None


print(give_money(230, 3,100, 5,50, 10,20)) # [1, 1, 4]

print(give_money(7, 1,5, 1,3, 1,2)) # [1,0,1]

print(give_money(100, 0,100, 0,50, 0,20)) # None

print(give_money(18, 10,10, 10,9, 10,1)) # [1,0,8]

print(give_money(18, 1,10, 1,2, 1,5)) # None

Читать полностью…

Python beginners

но вообще можно идти с начала и тут логика достаточно легко может прослеживаться

Читать полностью…

Python beginners

и тут мы хоба уже дошли до 2, 3 -- которые мы вполне можем получить

Читать полностью…

Python beginners

я бы лучше посмотрел как можно получить 8 - 7, 8- 3, 8 - 2 из тех же купюр (1, 5, 6)

Читать полностью…

Python beginners

перебирать снизу по ресурсам дешевле, чем сверху

Читать полностью…

Python beginners

А поетри show tree оказывается просто показывается дерево 🌲 зависимости из лока, а не зависимости требуемые самих либ

Читать полностью…

Python beginners

Ну вроде все должно работать. Свободен.

Читать полностью…

Python beginners

Вроде пинил специально максимальные, пайдантика в зависимостях прямых нет

Читать полностью…

Python beginners

зависимости из пупроджекта можно и без поэтри прочитать

Читать полностью…

Python beginners

выкинуть поэтри и скачать напрямую

Читать полностью…

Python beginners

https://github.com/aiogram/aiogram/blob/v3.28.2/pyproject.toml#L46

Читать полностью…

Python beginners

не ограничивает он его

Читать полностью…

Python beginners

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

def give_money(N, x1, n1, x2, n2, x3, n3):
res = [0, 0, 0]
summ = N

if summ:
res[0] = min(x1, summ // n1)
summ -= res[0] * n1

if summ:
res[1] = min(x2, summ // n2)
summ -= res[1] * n2

if summ:
res[2] = min(x3, summ // n3)
summ -= res[2] * n3

if summ:
return None # "денег нет, но вы держитесь"

return res

print(give_money(230, 3,100, 5,50, 10,20)) # None

print(give_money(7, 1,5, 1,3, 1,2)) # [1,0,1]

print(give_money(100, 0,100, 0,50, 0,20)) # None

print(give_money(18, 10,10, 10,9, 10,1)) # [1,0,8]

print(give_money(18, 1,10, 1,2, 1,5)) # None

Читать полностью…

Python beginners

А можно взять в лапки поиск в ширину с отсечениями, и получить примерно то же самое.

Читать полностью…

Python beginners

мы говорим, что dp[i] = массиву из монеток, из которых i можно собрать

тогда dp[i] = 0 для всех i, кроме тех монеток, которые у нас изначально есть

в таком случае dp[2] = [2], dp[3] = [3], dp[7] = [7]

рассмотрим dp[4], есть варианты пойти в индексы (4-2, 4-3, 4-7) = (2, 1, -3). индекс -3 отбрасываем -- отрицательные не нужны, dp[1] == 0, поэтому тоже скип

dp[2] = 2

тогда dp[4] = [4-2] + dp[2] = [2,2]

dp[5], тут индексы (3, 2, -2), -2 отбрасываем,
dp[5] = [5-3] + dp[3] или [5-2] + dp[2]
итого получаем dp[5] = [2, 3] или [3, 2] -- выбираем вообще любую и идём считать дальше

ну и вот такими рассуждениями можем достроить до dp[8] и узнать из каких монеток можно собрать сумму 8

Читать полностью…

Python beginners

Если про реальный банкомат, то многие современные банкоматы с функцией Cash in, кладут купюры в кассеты из которых выдают деньги, так что каждый раз при выдачи нужно было бы делать проверку остатка в кассетах.

Читать полностью…

Python beginners

Если , что я только базу при базу освоила, так что как могу говориться. Ну и плюс вариант, когда сумму никак нельзя получить теми купюрами что имеем (-1)

Читать полностью…

Python beginners

а на следующей итерации можно посмотреть 5 - 3, 5 - 2, 6 - 3, 6 - 2, иначе говоря (2, 3, 4)

Читать полностью…

Python beginners

Тогда мой алгоритм "запишет" одну купюру в 7, а потом застопорится, хотя денег хватает (мог бы выдать 2х3 и 1х2 или 4х2)...

Читать полностью…

Python beginners

Представь что у тебя есть купюры

7
3
2

А ты хочешь выдать 8

Читать полностью…
Subscribe to a channel