In einer Schleife addieren
Schleifen können mehr als ausgeben. Sehr oft addieren sie viele Werte. Emmas Erdbeeren werden reif: Am Tag 1 pflückt sie 1 Korb, am Tag 2 zwei Körbe, am Tag 3 drei und so weiter. Wie viele Körbe pflückt sie in 10 Tagen?
local summe = 0
for tag = 1, 10 do
summe = summe + tag
end
print("Körbe: " .. summe)Körbe: 55Die Variable summe sammelt die Summe. Sie beginnt bei 0, denn bevor du etwas addierst, ist die Summe null. In jedem Durchlauf addiert summe = summe + tag die Körbe eines Tages. Um zu sehen, wie die Summe wächst, kannst du sie kurz in der Schleife ausgeben:
local summe = 0
for tag = 1, 5 do
summe = summe + tag
print(summe)
end1
3
6
10
15Nach dem Tag 1 ist die Summe 1, nach dem Tag 2 ist sie 3 (1 + 2), dann 6 (1 + 2 + 3) und so weiter. Werte in einer Schleife auszugeben ist der einfachste Weg herauszufinden, was eine Schleife wirklich tut, wenn ihr Ergebnis dich überrascht.
Es kommt darauf an, wo jede Zeile steht:
local summe = 0steht vor der Schleife, damit es nur einmal ausgeführt wird. Im Block der Schleife würde es in jedem Durchlauf eine neuesummemit dem Wert 0 erzeugen. Und nach der Schleife gäbe es diesesummenicht mehr: Eine lokale Variable, die in einem Block erzeugt wird, existiert nur in diesem Block, genau wie die Variable einerfor-Schleife. Das Programm würde mitattempt to concatenate a nil value (global 'summe')enden.printsteht nach der Schleife, wenn die Summe fertig ist. In der Schleife würde es jede Zwischensumme ausgeben, wie oben.
Der Durchschnitt ist die Summe geteilt durch die Anzahl der Werte. Denk daran, dass / immer eine Dezimalzahl ergibt:
local summe = 0
for tag = 1, 10 do
summe = summe + tag
end
print("Durchschnitt: " .. summe / 10)Durchschnitt: 5.5Die Rechnung summe / 10 wird vor dem Verbinden mit .. ausgeführt, du brauchst also keine Klammern. Wäre die Summe 60, bekämst du 6.0. Um immer eine Nachkommastelle auszugeben, nimm string.format("%.1f", summe / 10).
So schreibst du es:
Anweisungen
- 1
Wie viele Erdbeeren pflückt Emma in diesen sechs Tagen? Erzeuge vor der Schleife eine lokale Variable
summemit dem Wert0. Addiere in der Schleife die Erdbeeren des Tages dazu,tag * 3. Gib nach der Schleife die Summe aus:Insgesamt: 63 - 2
Gib am Ende des Programms die durchschnittliche Zahl der Erdbeeren pro Tag aus:
summegeteilt durch6:Durchschnitt: 10.5