Если число нечётное, то уменьшить его на единицу - что неверно в следующем способе?
if x % 2: --x
Код полностью: https://ideone.com/SLZsrn
import random
def gen_smth():
x = random.randint(0, 100)
if x % 2: --x
return x
for _ in range(100):
print(gen_smth())
В выводе содержатся нечётные числа, хотя должны были получиться только чётные:
64
11
37
35
1
Ответ
В Python нету --x, как и x--, вместо них стоит использовать x -= 1
Ну и как Qwertiy сказал в комментариях, запись if True: --x работает, потому что здесь - используется в качестве унарного минуса
Может показаться странным, что --x является statement в Python, но если обратиться к формальному определению statement, то получаем следующую цепочку:
simple_stmt → expression_stmt → starred_expression → expression → conditional_expression → or_test → and_test → not_test → comparison → or_expr → xor_expr → and_expr → shift_expr → a_expr → m_expr → u_expr, где
u_expr включает в себя унарные выражения.
Комментариев нет:
Отправить комментарий