Menu
Coddy logo textTech

Условия с 'every'

Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 14 из 65.

В то время как any() проверяет, соответствует ли хотя бы один элемент условию, иногда вам нужно убедиться, что все элементы в списке удовлетворяют определенному требованию. Метод every() предоставляет эту функциональность, проверяя каждый отдельный элемент на соответствие вашему условию и возвращая true только в том случае, если все они проходят проверку.

Метод every() принимает функцию тестирования, которая возвращает true или false для каждого элемента. Если какой-либо элемент не проходит тест, every() немедленно возвращает false. Только когда каждый элемент проходит тест, он возвращает true.

List<int> examScores = [75, 82, 68, 91, 77];

// Проверить, все ли студенты сдали экзамен (балл > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed);  // true

Этот метод особенно полезен для сценариев валидации, когда вам нужно убедиться, что все элементы соответствуют определенным критериям перед продолжением. Метод every() прекращает проверку, как только находит элемент, который не проходит тест, что делает его эффективным для больших списков, где требуется полное соответствие.

challenge icon

Задание

Легко

Создайте программу, которая управляет системой контроля качества, проверяя, соответствуют ли все продукты в партии требуемым стандартам. Ваша программа должна:

  1. Прочитать строковый ввод, представляющий название фабрики
  2. Прочитать несколько целых чисел, представляющих оценки качества продукции (ввод закончится, когда вы получите -1)
  3. Прочитать целое число, представляющее минимальный порог стандарта качества
  4. Использовать метод every(), чтобы проверить, все ли оценки продукции больше или равны минимальному порогу
  5. Вывести результаты контроля качества в точном формате, показанном ниже

Например, если название фабрики — "Electronics Factory", оценки качества — 85, 92, 78, 88, 95, а минимальный порог — 75, ваша программа должна вывести:

Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipment

Если название фабрики — "Textile Mill", оценки качества — 68, 82, 74, 91, а минимальный порог — 70, ваша программа должна вывести:

Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement required

Если название фабрики — "Food Processing", оценки качества — 95, 98, 92, а минимальный порог — 90, ваша программа должна вывести:

Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipment

Ваша программа должна использовать метод every() для проверки того, что все оценки качества больше или равны минимальному порогу. Выведите "Batch approved for shipment", если все продукты соответствуют стандарту, или "Batch rejected - quality improvement required", если какой-либо продукт не соответствует минимальному требованию.

Шпаргалка

Метод every() проверяет, удовлетворяют ли все элементы в списке определенному условию. Он возвращает true только в том случае, если каждый элемент проходит проверку, и false, если хотя бы один элемент ее не проходит.

List<int> examScores = [75, 82, 68, 91, 77];

// Проверка, все ли студенты сдали экзамен (балл > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed);  // true

Метод every() прекращает проверку, как только находит элемент, не прошедший тест, что делает его эффективным для больших списков, где требуется полное соответствие условию.

Попробуйте сами

import 'dart:io';

void main() {
  // Считать название фабрики
  String? factoryName = stdin.readLineSync();
  
  // Считывать показатели качества, пока не встретится -1
  List<int> qualityScores = [];
  while (true) {
    int score = int.parse(stdin.readLineSync()!);
    if (score == -1) {
      break;
    }
    qualityScores.add(score);
  }
  
  // Считать минимальный порог
  int minThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Напишите свой код ниже
  // Используйте метод every(), чтобы проверить, соответствуют ли все оценки минимальному стандарту
  
  // Вывести результаты в требуемом формате
  print('Factory: $factoryName');
  print('Quality scores: $qualityScores');
  print('Minimum standard: $minThreshold');
  print('Checking if all scores >= $minThreshold');
  // Вывести, прошли ли все продукты проверку, и итоговый статус
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком