Vergleichsoperatoren
Die Zeichen > und < sind Vergleichsoperatoren: Sie vergleichen zwei Werte. Lua hat sechs davon:
==gleich:5 == 5~=ungleich:5 ~= 3>größer als:5 > 3<kleiner als:3 < 5>=größer oder gleich:5 >= 5<=kleiner oder gleich:3 <= 5
Alle Beispiele in der Liste sind wahr. Achte auf die Grenze: 12 > 12 ist falsch, aber 12 >= 12 ist wahr. „Ein Dutzend Eier oder mehr“ ist also eier >= 12.
Jeder Vergleich ergibt einen Wahrheitswert, true oder false, den du aus der vorigen Lektion kennst. Du kannst ihn ausgeben oder in einer Variablen speichern:
local eier = 12
print(eier > 12, eier >= 12)
local istDutzend = eier == 12
print("Ein Dutzend:", istDutzend)Das gibt Folgendes aus:
false true
Ein Dutzend: trueIn local istDutzend = eier == 12 vergleicht Lua zuerst und speichert dann das Ergebnis. „Gleich“ schreibt man mit zwei Gleichheitszeichen, weil eines schon eine Aufgabe hat: eier = 12 weist zu (speichert 12 in eier), während eier == 12 vergleicht (fragt, ob eier 12 ist, und ändert nichts). Ein einzelnes = in einer Bedingung ist ein Syntaxfehler: if eier = 12 then endet mit 'then' expected near '='.
„Ungleich“ ist in Lua ~=: eine Tilde und ein Gleichheitszeichen. Viele andere Sprachen schreiben !=, das Lua nicht kennt:
local tag = "Montag"
if tag != "Samstag" then
print("Heute ist kein Markt")
endmain.lua:2: 'then' expected near '!'Du kannst auch Texte vergleichen. Zwei Texte sind nur gleich, wenn sie genau übereinstimmen, Zeichen für Zeichen: "Karotte" == "karotte" ist falsch, weil ein Großbuchstabe ein anderes Zeichen ist. < und > vergleichen Texte in alphabetischer Reihenfolge: "apfel" < "birne" ist wahr. Alle Großbuchstaben stehen aber vor allen Kleinbuchstaben, deshalb ist auch "Zebra" < "apfel" wahr.
Eine Zahl und ein Text sind nie gleich, also ist 12 == "12" falsch, obwohl Lua "10" + 5 von selbst in eine Zahl umwandelt. Und <, >, <= oder >= zwischen einer Zahl und einem Text enden mit einem Fehler:
local eier = "14"
if eier < 12 then
print("Nicht genug Eier")
endmain.lua:2: attempt to compare string with numberWenn eine Zahl als Text ankommt, wandle sie zuerst mit tonumber um.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus: Es endet mit einem Fehler. Korrigiere die Bedingung mit dem Operator, den Lua für „ungleich“ benutzt. Das Programm gibt dann Folgendes aus:
Der Markt ist nur samstags geöffnet Karotten: 15 - 2
Der Händler Hugo kauft Karotten dutzendweise. Schreibe am Ende des Programms eine
if-Anweisung, dieHugo kauft ein Dutzend Karottenausgibt, wennkarottenmindestens 12 ist. Das Programm gibt Folgendes aus:Der Markt ist nur samstags geöffnet Karotten: 15 Hugo kauft ein Dutzend Karotten - 3
Ändere
karottenin12. Ein Dutzend sind genau 12, Hugo kauft sie also immer noch, und das Programm gibt Folgendes aus:Der Markt ist nur samstags geöffnet Karotten: 12 Hugo kauft ein Dutzend KarottenFehlt die letzte Zeile, prüfe deinen Vergleichsoperator.