Rückblick – Ein Element finden
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 41 von 66.
Aufgabe
EinfachSie erhalten zwei Eingaben. Die erste Eingabe ist eine Liste von Zahlen, die durch Kommas getrennt sind (z. B. 10,20,30,40), und die zweite Eingabe ist eine Zielzahl, nach der gesucht werden soll. Parsen Sie die durch Kommas getrennten Zahlen in einen Vektor und suchen Sie dann nach der Zielzahl. Verwenden Sie .iter().position(), um den Index der Zielzahl zu finden, was ein Option<usize> zurückgibt. Behandeln Sie beide Fälle mit match und geben Sie die entsprechende Nachricht aus.
Anforderungen:
- Lesen Sie die erste Eingabe (kommagetrennte Zahlen) und entfernen Sie Leerzeichen
- Teilen Sie die Eingabe nach Kommas auf und parsen Sie jeden Teil in
i32, um einen Vektor zu erstellen - Lesen Sie die zweite Eingabe (Zielzahl) und entfernen Sie Leerzeichen
- Parsen Sie die Zielzahl in
i32 - Verwenden Sie
.iter().position(|&x| x == target), um nach dem Ziel im Vektor zu suchen - Verwenden Sie einen
match-Ausdruck, um das von.position()zurückgegebeneOptionzu behandeln - Im
Some(index)-Zweig geben Sie aus:Found at index [index] - Im
None-Zweig geben Sie aus:Not found
Eingabe:
- Erste Zeile: Kommagetrennte Zahlen (z. B.
10,20,30,40) - Zweite Zeile: Eine Zielzahl, nach der gesucht werden soll (z. B.
30)
Ausgabe:
- Wenn das Ziel gefunden wird:
Found at index [index] - Wenn das Ziel nicht gefunden wird:
Not found
Probier es selbst
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Lies die durch Kommas getrennten Zahlen ein
let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
// Lies die Zielzahl ein
let target_input = lines.next().unwrap().unwrap().trim().to_string();
// Wandle die durch Kommas getrennten Zahlen in einen Vektor um
let numbers: Vec<i32> = numbers_input
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// Wandle die Zielzahl um
let target: i32 = target_input.parse().unwrap();
// TODO: Schreibe deinen Code unten
// Verwende .iter().position(), um das Ziel zu finden, und match, um das Ergebnis zu verarbeiten
}Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code6Umgang mit fehlenden Werten mit 'Option'
Was ist ein 'Option'?'match' mit 'Option' verwendenis_some() und is_none()Ein 'Option' entpackenDie 'expect'-MethodeStandardwert bereitstellen: unwrap_orRückblick – Ein Element finden