Вторая программа: «Время прогулки»

Оцените, пожалуйста, код.
let temperature = 20;
let isRaining = true;
let minutes = 0;

if (!isRaining) {
if (temperature >= 10 && temperature < 15){
minutes = 30;
};
if (temperature >= 15 && temperature < 25) {
minutes = 40;
};
if (temperature >= 25 && temperature <= 35) {
minutes = 20;
};
} else {
minutes = 0;
};

3 лайка

А я решил через модуль числа, т.к. условие “отклонение” в ту или иную сторону - это и есть модуль.

let temperature = 20;
let itsRaining = false;
let idealTemperature = 20;
let difference = Math.abs ( idealTemperature - temperature );
let minutes;

if ( itsRaining || temperature < 0 || temperature > 35 ) {
minutes = 0;
} else if ( temperature == idealTemperature ) {
minutes = 20;
} else minutes = idealTemperature - difference;

3 лайка

let temperature = 20;
let isRaining = true;
let minutes = 0;

if (!isRaining && (temperature >= 15 && temperature < 25)) {
minutes = 40;
} else if (!isRaining && (temperature >= 25 && temperature <= 35)) {
minutes = 20;
}
else if (!isRaining && (temperature >= 10 && temperature < 15)) {
minutes = 30;
}
else {
minutes = 0;
}

if(!isRaining) {
  if (temperature >= 10 && temperature < 15) {
      minutes = 30;
      }
      
    if(temperature >= 15 && temperature < 25) {
      minutes = 40;
      }  
      
    if(temperature >= 25 && temperature <= 35) {
        minutes = 20;
      }  
      
  } else {
    minutes = 0;
    }
  1. нужно использовать конструкцию else if, иначе в твоем случае, если вдруг условия пересекаются, то выполнится несколько условий, а в случае else if выполняется только одно

  2. длинные, сложночитаемые условия, нужно выносить в переменные с понятным названием, например
    const isLessThan15 = !isRaining && temperature >= 10 && temperature < 15;
    const isLessThan25 = !isRaining && temperature >= 15 && temperature < 25;

  3. всегда используй const, а только если переменная перезаписывается используй let (браузер всегда отобразит ошибку если ты вдруг перезапишешь const)

  4. если ты все же используешь let присваивать значение 0, как здесь let minutes = 0; необязательно, можно написать так let minutes;, ты ведь в последнем else все равно
    присваиваешь 0

} else {
minutes = 0;
};

либо ты мог присвоить в начале let minutes = 0;, а последнее условие не писать

const temperature = 20;
const isRaining = true;
let minutes = 0;

const isLessThan15 = !isRaining && temperature >= 10 && temperature < 15;
const isLessThan25 = !isRaining && temperature >= 15 && temperature < 25;
const isLessThan35 = !isRaining && temperature >= 25 && temperature < 35;

if (isLessThan15) {
  minutes = 30;
} else if (isLessThan25) {
  minutes = 20;
} else if (isLessThan35) {
  minutes = 10;
}
1 лайк

let temperature = 45;
let isRaining = false;
let minutes = isRaining ? 0 :
temperature >= 10 && temperature < 15 ? 30 :
temperature >= 15 && temperature < 25 ? 40 :
temperature >= 25 && temperature <= 35 ? 20 :
temperature > 35 && temperature < 40 && 10 || 0;

console.log(minutes);

У меня получилось так:

let temperature = 20;
let isRaining = true;
let minutes = 0;

if (isRaining == false && 15 > temperature && temperature >= 10) {
minutes = 30;
} else if (isRaining == false && 25 > temperature && temperature >= 15) {
minutes = 40;
} else if (isRaining == false && 35 >= temperature && temperature >= 25) {
minutes = 20;
} else {
minutes = 0;
}

console.log(minutes);

1 лайк

Мне очень помог ваш пример! Сначала тупил со сравнениями в условиях)

В итоге проверку прошёл во всех десяти тестах, добавив переменные “cold” и “hot”
Получилось вот так:

let temperature;
let isRaining;
let minutes;
let cold = temperature < 10;
let hot = temperature > 35;

if (!isRaining && !cold && !hot) {
if (temperature >= 10 && temperature < 15) {
minutes = 30}
if (temperature >= 15 && temperature < 25) {
minutes = 40}
if (temperature >= 25 && temperature <= 35) {
minutes = 20}
} else {minutes = 0
}
console.log(minutes)

Большое спасибо!

Почему этот код не проходит тесты в случае с дождём.
let temperature = 20;
let isRaining = true;
let minutes = 0;
if (temperature < 10 || temperature > 35 || isRaining){
minutes = 0;
};
if (temperature >= 10 && temperature < 15){
minutes = 30;
};
if (temperature >= 15 && temperature < 25){
minutes = 40;
};
if (temperature >= 25 && temperature <= 35){
minutes = 20;
};
console.log(minutes);

А этот код проходит все тесты. Я просто перенёс первый блок в конец. Что теперь позволяет такому же коду проходить тесты?

let temperature = 20;
let isRaining = true;
let minutes = 0;

if (temperature >= 10 && temperature < 15){
minutes = 30;
};
if (temperature >= 15 && temperature < 25){
minutes = 40;
};
if (temperature >= 25 && temperature <= 35){
minutes = 20;
};
if (temperature < 10 || temperature > 35 || isRaining){
minutes = 0;
};
console.log(minutes);

Оцените мой код:
if (!isRaining && temperature >= 10 && temperature < 15) {
minutes = 30;
} if (!isRaining && temperature >= 15 && temperature < 25) {
minutes = 40;
} if (!isRaining && temperature >= 25 && temperature <= 35) {
minutes = 20;
}
Решил без добавления ветки else.
Но если попробовать с ней
else {
minutes = 0;
}
То тесты пройдут не все.
А вообще решил ее не добавлять так-как изначально minutes = 0;

1 лайк

if(!isRaining && temperature >= 10 && temperature <= 35){
if(temperature < 15)
minutes = 30;
else if(temperature < 25)
minutes = 40;
else if(temperature <= 35)
minutes = 20;
}

У меня получилось вот так. Код прошел все тесты

if (!isRaining && temperature >= 10 && temperature < 15) {
  minutes = 30;
}

if (!isRaining && temperature >= 15 && temperature < 25) {
  minutes = 40;
}

if (!isRaining && temperature >= 25 && temperature <= 35) {
  minutes = 20;
}```