Условия с '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() прекращает проверку, как только находит элемент, который не проходит тест, что делает его эффективным для больших списков, где требуется полное соответствие.
Задание
ЛегкоСоздайте программу, которая управляет системой контроля качества, проверяя, соответствуют ли все продукты в партии требуемым стандартам. Ваша программа должна:
- Прочитать строковый ввод, представляющий название фабрики
- Прочитать несколько целых чисел, представляющих оценки качества продукции (ввод закончится, когда вы получите
-1) - Прочитать целое число, представляющее минимальный порог стандарта качества
- Использовать метод
every(), чтобы проверить, все ли оценки продукции больше или равны минимальному порогу - Вывести результаты контроля качества в точном формате, показанном ниже
Например, если название фабрики — "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');
// Вывести, прошли ли все продукты проверку, и итоговый статус
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей