lingvini2013
"x in [x for x in range(1, 11)]" - на самом деле "x in range(1, 11)" В python-e 3.8.3 и мой вариант работает, проверяет есть ли x в списке [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
lingvini2013
Вот с консоли >>> x = 10 >>> x in [x for x in range(1, 11)] True
nelle987
Проблема (кроме абсолютной нечитаемости) в том, что x in [x for x in range(1, 11)] работает медленнее, чем x in range(1, 11). Второе где-то внутри разворачивается примерно в 1 <= x and x < 11, а x in [x for x in range(1, 11)] в худшем случае должно пробежать по всем элементам списка [x for x in range(1, 11)], чтобы сказать, есть там x или нет
lingvini2013
И не поспоришь, это был пример синтаксиса
nelle987
Вот и мне интересно, где из range нужно делать массив и зачем Про Йоду немного неправда, или я не понимаю, о чем суть. Если тернарный оператор - то необычно тем, кто привык по-другому, но читается нормально: "a if a > b else b" = "a, если a > b, иначе b" Йода - это скорее про какой-нибудь хаскель
Answers & Comments
Verified answer
===== PASCALABC.NET ======
begin
var x := ReadReal('x =');
var y: real;
if x < 0 then
y := Sin(x)
else if x <= 1 then
y := x ** 3
else
y := x * x - Cos(x);
Print('Y =', y)
end.
В python-e 3.8.3 и мой вариант работает, проверяет есть ли x в списке [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> x = 10
>>> x in [x for x in range(1, 11)]
True
Про Йоду немного неправда, или я не понимаю, о чем суть. Если тернарный оператор - то необычно тем, кто привык по-другому, но читается нормально: "a if a > b else b" = "a, если a > b, иначе b"
Йода - это скорее про какой-нибудь хаскель
Verified answer
var x, y: real;
begin
readln(x);
if x < 0 then y:= sin(x) else
if x <= 1 then y:= x * x * x else
if x > 1 then y:= x * x - cos(x);
writeln(y)
end.