def get_value_from_dict(dct, path):
if not path:
return
key = path[0]
new_path = path[1:]
if curr_value := dct.get(key, None):
if new_path:
if type(curr_value) == dict:
if new_path:
return get_value_from_dict(curr_value, new_path)
else:
return
else:
return curr_value
d={
"lvl1_1": {
"lvl2_1": {
"lvl3_1": "value",
"lvl3_2": {
"lvl4_1": "value"
},
"lvl2_2": "value"
}
}
}
print(get_value_from_dict(d, ["lvl1_1", "lvl2_1", "lvl3_2", "lvl4_1"]))
def find_nb(m):
summ = 0
i=0
while summ != m:
i+=1
summ += i**3
if summ > m:
return -1
return i
TypeError: countdown() missing 1 required positional argument: 'time'
root.after(1000, countdown, count-1)
root.after(1000, countdown, count-1, time)
@dp.callback_query_handler(lambda call: call.data.startswith("answer")
2x+3y>30
. У нас есть возможные комбинации x и y при которых это выражение будет ложным. Нам эти комбинации и нужны. Главная задача найти из этих двух комбинаций такие "граничные" комбинации, при которых любое увеличение x или y сделает выражение 2x+3y>30
истинным. Для этого пройдемся по x в диапазоне от 0 до 15 и по y в диапазоне от 0 до 10 и подставим в выражение 2x+3y<=30
И среди всех этих комбинаций нужно найти такую, которая даст максимальную сумму.a = 0
for x in range(16): # от 0 до 15
for y in range(11): # от 0 до 10
if 2*(x)+3*(y)<=30:
if a<x+y:
a = x+y
print(a)
@dp.callback_query_handler(text="<info>")
@dp.callback_query_handler(lambda call: сall.data.startswith("<info>"))
"<info>|1",
где <info>
- это то, что вы обычно закидываете в эту кнопку, 1 - это флаг того, что кнопка не была нажата.call.data == "<info>"
, то теперь это должно быть что-то типа call.data.startswith("<info>")
или call.data.split("|")[0] == "<info>"
if int(call.data.split("|")[1]):
# Тут уже просто редактируем клавиатуру, но в callback_data вставляем 0 вместо 1
else:
# Выводим сообщение о том, то кнопку уже нажимали.