Benutzereingaben abfragen
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 vorhandenen Willkommensnachricht drei Eingaben vom Benutzer ein:
- Den Gesamtbetrag der Rechnung
- Den Trinkgeld-Prozentsatz (als ganze Zahl, z. B.
15für 15%) - Die Anzahl der Personen, die sich die Rechnung teilen
In R-Skripten, die nicht-interaktiv ausgeführt werden (wie auf dieser Plattform), wird die Eingabe aus dem Standard-Input-Stream gelesen. Um dies zu tun, öffne zuerst eine Verbindung zu stdin mit file(), lies dann jede Zeile mit readLines() und schließe die Verbindung, wenn du fertig bist:
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 erklärt, was jeder Teil macht:
file("stdin", "r")— öffnet den Standard-Input-Stream 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 mehrere Zeilen gleichzeitig mitn =lesen, währendreadline()nur interaktiv in der R-Konsole funktioniertsuppressWarnings(...)— unterdrückt harmlose Warnungen, die auftreten, wenn man auf diese Weise vonstdinliest. Wenn R in einem Skript vonstdinliest, erzeugt es manchmal eine Warnung wie "incomplete final line", selbst wenn alles korrekt funktioniert. Das Einschließen des Aufrufs insuppressWarnings()verbirgt diese Meldungen, damit sie deine Ausgabe nicht überladen — es beeinflusst die gelesenen Werte nichtas.numeric(...)— wandelt die Texteingabe in eine Zahl umclose(con)— schließt die Verbindung, nachdem alle Eingaben gelesen wurden
Speichere die drei Werte in Variablen namens bill, tip_percent und people.
Zeige nach dem Einlesen der Eingaben eine Bestätigungsnachricht an, die die eingegebenen Daten im folgenden Format darstellt:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]Verwende cat() für alle Ausgaben und füge Zeilenumbruchzeichen \n ein, wo sie benötigt werden. Verwende sep = "" in jedem cat()-Aufruf, um unerwünschte Leerzeichen zu vermeiden.
Standardmäßig fügt cat() ein Leerzeichen zwischen jedem Element ein, das es ausgibt. Zum Beispiel:
cat("Bill: $", 120, "\n") # prints: Bill: $ 120 Beachte die unerwünschten Leerzeichen zwischen $ und 120 sowie vor dem Zeilenumbruch. Das Hinzufügen von sep = "" weist cat() an, 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 sind, 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 27Rechnungs-Split-Rechner
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit einer Besonderheit
SpielübersichtDie FizzBuzz-Funktion13Vektoren für Fortgeschrittene
Vektor-Slicing und IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahl-DatentypZeichen-DatentypLogischer DatentypDatentypen prüfenBenennungskonventionenFehlende Werte: NAZusammenfassung – Variablenerstellung5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Rückblick - FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenRückblick - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahlige Division und ModuloZuweisungsoperatorenWiederholung - Einfache MathematikVergleichsoperatoren6Grundlagen der Ein- und Ausgabe
Print-AusgabeCat zur AusgabeAusgabe mit VariablenEingabe lesen mit readline()Grundlagen der TypumwandlungWiederholung – AltersrechnerWiederholung – Wahr oder Falsch9Funktionen
Funktionen deklarierenFunktionsargumenteRückgabewerteWiederholung - Sigma-FunktionWiederholung - ValidierungsfunktionStandard-Parameterwerte