Benutzereingaben erfassen
Teil des Abschnitts Grundlagen der R-Journey von Coddy. Lektion 34 von 78.
Aufgabe
EinfachIn der vorherigen Lektion hast du eine Willkommensnachricht für den Bill Split Calculator erstellt. Füge nun die Funktionalität hinzu, um Benutzereingaben für die Rechnungsberechnung zu erfassen.
Lies nach deiner bestehenden Willkommensnachricht drei Eingaben vom Benutzer ein:
- Den Gesamtbetrag der Rechnung
- Den Trinkgeldprozentsatz (als ganze Zahl, z. B.
15für 15 %) - Die Anzahl der Personen, die die Rechnung teilen
In R-Skripten, die nicht interaktiv ausgeführt werden (wie auf dieser Plattform), werden Eingaben aus dem Standardeingabestream gelesen. Öffne dazu zunächst mit stdin eine Verbindung zu file(), lies dann jede Zeile mit readLines() ein und schließe die Verbindung anschließend:
con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)Hier ist die Funktion der einzelnen Teile:
file("stdin", "r"): öffnet den Standardeingabestream zum Lesen und speichert ihn inconreadLines(con, n = 1): liest genau eine Zeile aus dieser Verbindung. Hinweis:readLines()unterscheidet sich vonreadline():readLines()arbeitet mit Dateiverbindungen (einschließlichstdin) und kann mithilfe vonn =mehrere Zeilen gleichzeitig lesen, währendreadline()nur interaktiv in der R-Konsole funktioniertsuppressWarnings(...): unterdrückt harmlose Warnungen, die beim Lesen ausstdinauf diese Weise erscheinen. Wenn R in einem Skript ausstdinliest, erzeugt es manchmal eine Warnung wie "incomplete final line", auch wenn alles korrekt funktioniert. Das Einschließen des Aufrufs insuppressWarnings()blendet diese Meldungen aus, damit sie deine Ausgabe nicht unübersichtlich machen. Die eingelesenen Werte werden dadurch nicht beeinflusstas.numeric(...): wandelt die Texteingabe in eine Zahl umclose(con): schließt die Verbindung, nachdem alle Eingaben gelesen wurden
Speichere die drei Werte in Variablen mit den Namen bill, tip_percent und people.
Zeige nach dem Einlesen der Eingaben eine Bestätigungsnachricht an, die die eingegebenen Werte im folgenden Format darstellt:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]Verwende für sämtliche Ausgaben cat() und füge bei Bedarf Zeilenumbruchzeichen \n ein. Verwende in jedem sep = ""-Aufruf cat(), um unerwünschte Leerzeichen zu vermeiden.
Standardmäßig fügt cat() zwischen jedem ausgegebenen Element ein Leerzeichen ein. Zum Beispiel:
cat("Bill: $", 120, "\n") # prints: Bill: $ 120 Beachte die unerwünschten Leerzeichen zwischen $ und 120 sowie vor dem Zeilenumbruch. Durch das Hinzufügen von sep = "" wird cat() angewiesen, stattdessen eine leere Zeichenfolge als Trennzeichen zu verwenden, sodass nichts zwischen den Elementen eingefügt wird:
cat("Bill: $", 120, "\n", sep = "") # prints: Bill: $120Wende dieses Muster auf alle drei Bestätigungszeilen an:
cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")Wenn die Eingaben beispielsweise 120, 18 und 4 lauten, sollte die vollständige Ausgabe wie folgt aussehen:
Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4Probier es selbst
# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\n")Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren (AND, OR)Logische Operatoren Teil 2 (NOT)Wiederholung – einfache LogikVektorisierte Logik Teil 1Vektorisierte Logik Teil 27Rechner zum Teilen der Rechnung
BegrüßungsnachrichtBenutzereingaben erfassen10FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion13Fortgeschrittene Vektoren
Vektor-Slicing und -IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahliger DatentypZeichen-DatentypLogischer DatentypDatentypen überprüfenNamenskonventionenFehlende Werte: NAZusammenfassung – Variablen erstellen5Entscheidungen treffen
If-AnweisungIf - ElseWiederholung – Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Wiederholung – FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenWiederholung – Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahldivision und ModuloZuweisungsoperatorenRückblick – Einfache MathematikVergleichsoperatoren6Grundlegende Ein- und Ausgabe
Ausgabe mit printcat zur AusgabeAusgabe mit VariablenEingaben mit readline() lesenGrundlagen der TypkonvertierungRückblick – AltersrechnerRückblick – Wahr oder falsch9Funktionen
Eine Funktion deklarierenFunktionsargumenteRückgabewerteWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardparameterwerteÜbe selbstständig: Online-R-Compiler