Tracks
/
Swift
Swift
/
Übungen
/
Ärgerlicher Fahrzeugkauf
Ärgerlicher Fahrzeugkauf

Ärgerlicher Fahrzeugkauf

Lernübung

Einführung

Vergleichsoperatoren

Vergleichsoperatoren vergleichen zwei Werte des gleichen Typs und geben einen Bool-Wert (true oder false) zurück. Wenn du Werte unterschiedlicher Typen vergleichst, gibt der Compiler einen Fehler aus.

Die Standardvergleichsoperatoren in Swift sind:

Operator Beschreibung Beispiel
== Gleich 1 == 1 (true)
!= Ungleich 1 != 2 (true)
< Kleiner als 4 < 5 (true)
<= Kleiner oder gleich 4 <= 4 (true)
> Größer als 3 > 1 (true)
>= Größer oder gleich 2 >= 2 (true)

if- und else-Anweisungen

Eine Bedingte Anweisung führt Code aus, je nachdem, ob eine Bedingung zu true oder false ausgewertet wird. Die häufigste Bedingte Anweisung ist die if-Anweisung, die einen Block Code nur dann ausführt, wenn ihre Bedingung true ist. Schreibe eine if-Anweisung mit dem Schlüsselwort if, gefolgt von der Bedingung und dem Block in geschweiften Klammern:

let wheelCount = 4
if wheelCount == 4 {
    print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"

Du kannst if mit einem else-Zweig kombinieren, um alternativen Code auszuführen, wenn die Bedingung false ist:

let precipitationInMM = 0.5
if precipitationInMM > 0.5 {
    print("You will need an umbrella")
} else {
    print("You will not need an umbrella")
}
// Prints "You will not need an umbrella"

Um mehrere Bedingungen nacheinander zu prüfen, verkettest du Anweisungen mit else if. Eine if-Anweisung benötigt keinen else-Zweig, aber du kannst einen angeben, um Fälle abzudecken, in denen keine der Bedingungen zutrifft:

let favoriteFruit = "Apple"

if favoriteFruit == "Banana" {
    print("Your favorite fruit is a banana")
} else if favoriteFruit == "Orange" {
    print("Your favorite fruit is an orange")
} else if favoriteFruit == "Apple" {
    print("Your favorite fruit is an apple")
} else {
    print("Your favorite fruit is not a banana, orange, or apple")
}
// Prints "Your favorite fruit is an apple"

if-Ausdrücke

In modernem Swift kannst du if-Anweisungen auch als Ausdrücke verwenden, die einen Wert liefern. Jeder Zweig ergibt einen Wert, sodass du Ergebnisse einfach bedingt zuweisen kannst:

let cpuBits = 32
let architecture = if cpuBits == 64 {
    "x86_64"
} else {
    "x86_32"
}

print(architecture)
// Prints "x86_32"

Ternärer Operator

Der Ternäre Bedingungsoperator ist eine knappe Kurzform für einen if-else-Ausdruck. Er wertet eine Bedingung aus und gibt einen von zwei Werten zurück, je nachdem, ob diese Bedingung true oder false ist.

Der Operator besteht aus drei Teilen: condition ? trueExpression : falseExpression. Ergibt condition den Wert true, wird trueExpression ausgewertet und zurückgegeben; andernfalls wird falseExpression ausgewertet und zurückgegeben.

Der ternäre Operator eignet sich ideal für einfache Entscheidungen in einer Zeile:

let showFahrenheit = true
let temperatureInCelsius = 30

let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86

Das obige Beispiel ist eine kompakte Entsprechung zu:

let showFahrenheit = true
let temperatureInCelsius = 30

let temperature = if showFahrenheit {
    temperatureInCelsius * 9 / 5 + 32
} else {
    temperatureInCelsius
}

Anleitung

In dieser Übung schreibst du etwas Code, um dich darauf vorzubereiten, ein Fahrzeug zu kaufen.

Du hast drei Aufgaben: eine, um zu berechnen, ob du dir die monatlichen Raten leisten kannst, eine, um zu bestimmen, welchen Führerschein du brauchst, und eine, um den akzeptablen Preis für ein gebrauchtes Fahrzeug zu schätzen.

1. Berechne, ob du dir die monatlichen Raten für ein bestimmtes Auto leisten kannst

Die Autohändler in deiner Stadt bieten alle eine fünfjährige Finanzierung mit 0 % Zinsen an, die du gerne nutzen würdest. Aber du bist dir nicht sicher, ob du dir die monatlichen Raten für das Auto leisten kannst, das du willst.

Die monatliche Rate ist der Gesamtpreis des Autos geteilt durch die Anzahl der Monate im Fünfjahreszeitraum.

Implementiere die Funktion canIBuy(vehicle:price:monthlyBudget:), die die folgenden Argumente entgegennimmt:

  • vehicle – Der Name des Fahrzeugs, das du kaufen möchtest.
  • price – Der Preis des Fahrzeugs, das du kaufen möchtest.
  • monthlyBudget – Der Geldbetrag, den du monatlich zahlen kannst.

Die Funktion soll abhängig von den folgenden Bedingungen die folgende Nachricht zurückgeben:

  • Wenn die monatliche Rate des Fahrzeugs kleiner oder gleich dem monatlichen Budget ist, gib die Nachricht "Yes! I'm getting a <vehicle>" zurück.
  • Wenn die monatliche Rate des Fahrzeugs um bis zu 10 % (einschließlich) über deinem monatlichen Budget liegt, gib die Nachricht "I'll have to be frugal if I want a <vehicle>" zurück.
  • Wenn die monatliche Rate des Fahrzeugs mehr als 10 % über deinem monatlichen Budget liegt, gib die Nachricht "Darn! No <vehicle> for me" zurück.
canIBuy(vehicle: "1974 Ford Pinto", price: 516.32, monthlyBudget: 100.00)
// returns "Yes! I'm getting a 1974 Ford Pinto"
canIBuy(vehicle: "2011 Bugatti Veyron", price: 2_250_880.00, monthlyBudget: 10000.00)
// returns "Darn! No 2011 Bugatti Veyron for me"
canIBuy(vehicle: "2020 Indian FTR 1200", price: 12_500, monthlyBudget: 200)
// returns "I'll have to be frugal if I want a 2020 Indian FTR 1200"

2. Bestimme, welchen Führerscheintyp du brauchst

Du hast dich entschieden, ein gebrauchtes Fahrzeug zu kaufen, und musst bestimmen, welchen Führerschein du brauchst, um es zu fahren.

Implementiere die Funktion licenseType(numberOfWheels:), die das Argument numberOfWheels entgegennimmt, die Anzahl der Räder des Fahrzeugs, das du kaufen möchtest.

Die Funktion soll abhängig von den folgenden Bedingungen die folgende Nachricht zurückgeben:

  • Wenn die Anzahl der Räder 2 oder 3 beträgt, gib die Nachricht "You will need a motorcycle license for your vehicle" zurück.
  • Wenn die Anzahl der Räder 4 oder 6 beträgt, gib die Nachricht "You will need an automobile license for your vehicle" zurück.
  • Wenn die Anzahl der Räder 18 beträgt, gib die Nachricht "You will need a commercial trucking license for your vehicle" zurück.
  • Wenn die Anzahl eine andere Zahl ist, gib die Nachricht "We do not issue licenses for those types of vehicles" zurück.
licenseType(numberOfWheels: 2)
// returns "You will need a motorcycle license for your vehicle"
licenseType(numberOfWheels: 6)
// returns "You will need an automobile license for your vehicle"
licenseType(numberOfWheels: 18)
// returns "You will need a commercial trucking license for your vehicle"
licenseType(numberOfWheels: 0)
// returns "We do not issue licenses for those types of vehicles"

3. Schätze den Preis für ein gebrauchtes Fahrzeug

Jetzt, da du deine Entscheidung getroffen hast, möchtest du sicherstellen, dass du beim Händler einen fairen Preis bekommst. Da du ein gebrauchtes Fahrzeug kaufen möchtest, hängt der Preis davon ab, wie alt das Fahrzeug ist. Für eine grobe Schätzung nimm an, dass das Fahrzeug, wenn es weniger als 3 Jahre alt ist, 80 % des ursprünglichen Preises kostet, den es als Neuwagen hatte. Wenn es mindestens 10 Jahre alt ist, kostet es 50 %. Wenn das Fahrzeug mindestens 3 Jahre alt, aber nicht älter als 10 Jahre ist, kostet es 70 % des ursprünglichen Preises.

Implementiere die Funktion calculateResellPrice(originalPrice:yearsOld:), die die Argumente originalPrice (den ursprünglichen Preis des Fahrzeugs) und yearsOld (das Alter des Fahrzeugs in Jahren) entgegennimmt. Die Funktion soll den Wiederverkaufspreis des Fahrzeugs zurückgeben.

calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Swift Exercism

Bereit, mit Ärgerlicher Fahrzeugkauf zu starten?

Melde dich bei Exercism an, um Swift mit 35 Konzepte116 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.