Pobłażliwe ocenianie
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 51 z 56.
Ścisła równość jest bezwzględna. Prawdziwe quizy akceptują paris, Paris i PARIS jako tę samą odpowiedź.
Przepis z rozdziału 1: usuń białe znaki, zamień obie strony na małe litery, porównaj:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}To taki pomocnik, którego warto wydzielić do osobnej funkcji. Pętla quizu jest czytelniejsza, gdy każde pytanie zajmuje jeden wiersz, a jutrzejsza poprawka błędu będzie wymagała zmian tylko w jednym miejscu.
Wyzwanie
ŁatwyZdefiniuj funkcję grade(_ given: String, _ answer: String) -> Bool, która zwraca true, gdy oba ciągi znaków są zgodne po usunięciu białych znaków i zamianie liter na małe po obu stronach.
Baza questions jest podana. Odczytaj trzy wiersze ze standardowego wejścia. Dla każdego pytania wypisz:
- Treść pytania
correctlubwrong, w zależności od wyniku łagodnego porównania
Po zakończeniu wypisz Score: <n>/3.
Dla wejścia 4 / PARIS / Green wynikiem jest:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Spróbuj swoich sił
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: func grade(_:_:)->Bool z usuwaniem białych znaków na końcach i porównywaniem po zamianie na małe litery
// następnie w pętli wyświetl pytanie, odczytaj odpowiedź i wyświetl informację, czy jest poprawna;
// zakończ, wyświetlając 'Score: <n>/3'
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słówPoćwicz samodzielnie: Edytor online Swift