Спасибо, Сергей! Я взял смелость дописать пример и попробовал соединить all и any: def is_x(a): return a == 'x' def is_o(a): return a == 'o' def in_progress(a): return a == '-' def game_over(): return any([win_x(), win_o(), all(map(in_progress, P[:]))]) def win_x(): return any([all(map(is_x, P[:3])), all(map(is_x, P[3:6])), all(map(is_x, P[6:])), all(map(is_x, P[1::3])), all(map(is_x, P[2::3])), all(map(is_x, P[::3])), all(map(is_x, P[-3::-2])), all(map(is_x, P[::4]))]) def win_o(): return any([all(map(is_o, P[:3])), all(map(is_o, P[3:6])), all(map(is_o, P[6:])), all(map(is_o, P[1::3])), all(map(is_o, P[2::3])), all(map(is_o, P[::3])), all(map(is_o, P[-3::-2])), all(map(is_o, P[::4]))]) P = ['x', 'x', 'x', '-', 'o', 'x', '-', 'o', 'o'] def game_result(): if game_over(): res = 'Game over! ' if not win_x() and not win_o(): res += 'Draw.' elif win_x() and not win_o(): res += 'X wins.' elif not win_x() and win_o(): res += 'O wins.' else: res = 'Play The Game!' return res results = game_result() print(f"{results}")
Ещё думаю многим будет интересно узнать, что any() и all() используют ленивые вычисления. Т. е. если в процессе перебора значений: у all попадается False или у any попадается True, то дальнейшие вычисления не производятся, поскольку ответ уже известен: all() = False, any() =True
Можно. Я проверял - работает. Кажется, Сергей немного переутомился))). В самом начале видео он же как раз и приводил примеры этого :) по таймингу в 4:55
all, я думаю, проще объяснить как конъюнкцию, в школе вроде это проходят, т.е. логическое умножение, т.к. как ты ноль не умножай всё равно будет 0, т.е. Flase/ А any, как сложение логическое.
Сергей , хочется купить ваш курс по ООП но с Беларуси не получается сделать , т.к нет возможности оплаты с наших карт. Не подскажете как можно получить курс :(
Автор работает на вечность! Надеюсь пройду Ваш курс до конца
Лучшие уроки по Python на русскоязычном сегменте ютуба!
хочу чтобы этот курс не заканчивался, отправляю мысли в космос!!! ⬆⬆⬆⬆⬆
Он закончится, но есть ооп)
Устроился в it?
Добавлю ещё, что надо всегда держать в голове: пустая последовательность в all будет давать True а в any False
all([]) --> True any([]) --> False
Спасибо, Сергей!
Я взял смелость дописать пример и попробовал соединить all и any:
def is_x(a):
return a == 'x'
def is_o(a):
return a == 'o'
def in_progress(a):
return a == '-'
def game_over():
return any([win_x(), win_o(), all(map(in_progress, P[:]))])
def win_x():
return any([all(map(is_x, P[:3])),
all(map(is_x, P[3:6])),
all(map(is_x, P[6:])),
all(map(is_x, P[1::3])),
all(map(is_x, P[2::3])),
all(map(is_x, P[::3])),
all(map(is_x, P[-3::-2])),
all(map(is_x, P[::4]))])
def win_o():
return any([all(map(is_o, P[:3])),
all(map(is_o, P[3:6])),
all(map(is_o, P[6:])),
all(map(is_o, P[1::3])),
all(map(is_o, P[2::3])),
all(map(is_o, P[::3])),
all(map(is_o, P[-3::-2])),
all(map(is_o, P[::4]))])
P = ['x', 'x', 'x',
'-', 'o', 'x',
'-', 'o', 'o']
def game_result():
if game_over():
res = 'Game over! '
if not win_x() and not win_o():
res += 'Draw.'
elif win_x() and not win_o():
res += 'X wins.'
elif not win_x() and win_o():
res += 'O wins.'
else:
res = 'Play The Game!'
return res
results = game_result()
print(f"{results}")
Лайк, потом смотрю! Спасибо!
по алгоритмам ютуба лучше сперва досмотреть, желательно до конца, а потом уже лайк, так будет полезнее для канала.
@@ibrahimoglu а я как досмотрю, лайк уберу, поставлю дизлайк, отпишусь от канала, затем посмотрю опять, подпишусь уберу дизлайк и поставлю лайк 😂
@@mazur_vg хитрец))))
Ещё думаю многим будет интересно узнать, что any() и all() используют ленивые вычисления. Т. е. если в процессе перебора значений:
у all попадается False
или
у any попадается True,
то дальнейшие вычисления не производятся, поскольку ответ уже известен: all() = False, any() =True
Отличный урок Спасибо!
Спасибо за ваш труд, хотелось бы увидеть уроки по openCV.
Спасибо. Все понятно.
спасибо!
спасибо
👍👍👍👍👍👍👍👍👍👍👍👍
Спасибо за ваши лекции. Можно ли было в последнем примере написать loss = any(P), тк P все равно iterable и доп итератор чз map не нужен?
чтобы any() отработала ей на вход нужна последовательность из булевых величин, поэтому я использовал map для преобразования
Можно. Я проверял - работает. Кажется, Сергей немного переутомился))). В самом начале видео он же как раз и приводил примеры этого :) по таймингу в 4:55
all, я думаю, проще объяснить как конъюнкцию, в школе вроде это проходят, т.е. логическое умножение, т.к. как ты ноль не умножай всё равно будет 0, т.е. Flase/ А any, как сложение логическое.
если не считать страшное слово "кон..." то как вариант можно и так объяснить/ запомнить
👍👍👍👍
Можно было еще присвоить лямбду переменной)
lm = lambda x: x == "x"
Сергей , хочется купить ваш курс по ООП но с Беларуси не получается сделать , т.к нет возможности оплаты с наших карт. Не подскажете как можно получить курс :(
Надо же! Ну тут только найти кого-нибудь из РФ и через него.
@@selfedu_rus ;( печально , лан придумаем что-нить
Ну получаются что то типо такого.
all это:
0 * 1 = 0
1 * 0 = 0
0 * 0 = 0
1 * 1 = 1
any это:
0 + 1 = 1
1 + 1 = 1
1 + 1 = 1
0 + 0 = 0
Будет ли продолжение курса по pygame?
пока нет, нужно осветить другие важные темы )
@@selfedu_rus жаль :(
@@selfedu_rus, печально(
👍👍👍👍👍
👍