
Dazu muss ich den kleinsten Wert in einer Liste bestimmen. Wenn die Liste leer ist, bekomme ich einen Fehler - kann ich das vermeiden?
Code: Alles auswählen
titel = "Räumliches Vorstellungsvermägen"
text = "Ups, bei diesem Würfel sind ein paar Bausteine verlorengegeangen.<br>Wieviele sind es?"
hilfe = ""
anmerkung = ""
h_hoehe = 200
h_breite = 200
h_n = 6
t_n = h_n
v_n = h_n
start_x = int(h_breite/2) - h_n*10 + t_n*3
start_y = int(h_hoehe/2) + v_n*10 - t_n*3
liste = []
soll = (h_n-1) * (t_n-1) * (v_n-1)
ist = 0
for n in range(1, h_n):
liste.append(n)
liste.append(n)
schieb = []
fehlt_v = [] #Liste mit den fehlenden Klötzchen in der vorderen Reihe
fehlt_r =[] #Liste mit den fehlenden Klötzchen in der rechten Reihe
for v in range(1, v_n-1):
for t in range(1, t_n):
for h in range(1, h_n):
if v == v_n-2 and t == t_n-1: #sorgt für fehlende Klötzchen in der vorderen Reihe der vorletzten Schicht
zuza = random.randint(1,10)
if zuza < 8:
schieb.append((h*20+start_x-int(t*20*0.3), start_y+t*6-v*20))
ist += 1
else:
fehlt_v.append(h)
else:
if v == v_n-2 and h == h_n-1: #sorgt für fehlende Klötzchen in der rechten Reihe der vorletzten Schicht
zuza = random.randint(1,10)
if zuza < 5:
schieb.append((h*20+start_x-int(t*20*0.3), start_y+t*6-v*20))
ist += 1
else:
fehlt_r.append(t)
else:
schieb.append((h*20+start_x-int(t*20*0.3), start_y+t*6-v*20))
ist += 1
if fehlt_r:
fehlt_r_min = fehlt_r[0]
else:
fehlt_r_min = 1
for t in range(1, h_n):
random.shuffle(liste)
list=set(liste[:h_n-2])
for h in (list):
if t < t_n-1 or (h>0 and h not in fehlt_v):
if h < h_n-1 or (t < fehlt_r_min):
schieb.append((h*20+start_x-int(t*20*0.3), start_y+t*6-(v_n-1)*20))
ist += 1
erg = (soll-ist)
Code: Alles auswählen
titel = "Räumliches Vorstellungsvermägen"
text = "Ups, bei diesem Würfel sind ein paar Bausteine verlorengegeangen.<br>Wieviele sind es?"
hilfe = ""
anmerkung = ""
h_n = 6
t_n = h_n
v_n = h_n
schieb = []
# Liste mit den fehlenden Klötzchen in der vorderen Reihe
fehlt_v = []
# Liste mit den fehlenden Klötzchen in der rechten Reihe
fehlt_r =[]
for v in range(1, v_n-1):
for t in range(1, t_n):
for h in range(1, h_n):
# sorgt für fehlende Klötzchen in der vorderen Reihe der vorletzten Schicht
if v == v_n-2 and t == t_n-1:
zuza = random.randint(1,10)
if zuza < 8:
schieb.append((h, t, v))
else:
fehlt_v.append(h)
else:
# sorgt für fehlende Klötzchen in der rechten Reihe der vorletzten Schicht
if v == v_n-2 and h == h_n-1:
zuza = random.randint(1,10)
if zuza < 5:
schieb.append((h, t, v))
else:
fehlt_r.append(t)
else:
schieb.append((h, t, v))
if fehlt_r:
fehlt_r_min = fehlt_r[0]
else:
fehlt_r_min = 1
liste = []
for n in range(1, h_n):
liste.append(n)
liste.append(n)
for t in range(1, h_n):
random.shuffle(liste)
list=set(liste[:h_n-2])
for h in list:
if t < t_n-1 or (h>0 and h not in fehlt_v):
if h < h_n-1 or (t < fehlt_r_min):
schieb.append((h, t, v_n))
h_hoehe = 200
h_breite = 200
start_x = int(h_breite/2) - h_n*10 + t_n*3
start_y = int(h_hoehe/2) + v_n*10 - t_n*3
schieb_positionen = [
(h * 20 + start_x - int(t * 20 * 0.3), start_y + t * 6 - v * 20)
for h, t, v in schieb
]
soll = (h_n-1) * (t_n-1) * (v_n-1)
ergebnis = soll - len(schieb)
Code: Alles auswählen
titel = "Räumliches Vorstellungsvermägen"
text = "Ups, bei diesem Würfel sind ein paar Bausteine verlorengegeangen.<br>Wieviele sind es?"
hilfe = ""
anmerkung = ""
anzahl_breite = 5
anzahl_tiefe = anzahl_breite
anzahl_hoehe = anzahl_breite
schieb = []
# Liste mit den fehlenden Klötzchen in der vorderen Reihe
fehlt_v = []
# Liste mit den fehlenden Klötzchen in der rechten Reihe
fehlt_r =[]
for v in range(anzahl_hoehe - 1):
for t in range(anzahl_tiefe):
for h in range(anzahl_breite):
# sorgt für fehlende Klötzchen in der vorderen Reihe der vorletzten Schicht
if v == anzahl_hoehe - 2 and t == anzahl_tiefe - 1:
if random.random() < 0.7:
schieb.append((h, t, v))
else:
fehlt_v.append(h)
# sorgt für fehlende Klötzchen in der rechten Reihe der vorletzten Schicht
elif v == anzahl_hoehe - 2 and h == anzahl_breite - 1:
if random.random() < 0.4:
schieb.append((h, t, v))
else:
fehlt_r.append(t)
else:
schieb.append((h, t, v))
if fehlt_r:
fehlt_r_min = fehlt_r[0]
else:
fehlt_r_min = 0
liste = list(range(anzahl_breite)) * 2
for t in range(anzahl_breite):
random.shuffle(liste)
positionen = set(liste[:anzahl_breite - 1])
for h in positionen:
if t < anzahl_tiefe - 1 or (h >= 0 and h not in fehlt_v):
if h < anzahl_breite - 1 or (t < fehlt_r_min):
schieb.append((h, t, anzahl_hoehe))
hoehe = 200
breite = 200
start_x = int(breite/2) - anzahl_breite * 10 + anzahl_tiefe * 3 + 7
start_y = int(hoehe/2) + anzahl_hoehe * 10 - anzahl_tiefe * 3 - 7
schieb_positionen = [
(h * 20 + start_x - int(t * 20 * 0.3), start_y + t * 6 - v * 20)
for h, t, v in schieb
]
soll = anzahl_breite * anzahl_tiefe * anzahl_hoehe
ergebnis = soll - len(schieb)
Code: Alles auswählen
for t in range(anzahl_tiefe):
for h in range(anzahl_breite):
if ((t == anzahl_tiefe - 1 and h in fehlt_v)
or (h == anzahl_breite - 1 and t >= fehlt_r_min)):
pass
elif random.random() < 0.666667:
schieb.append((h, t, anzahl_hoehe - 1))
Code: Alles auswählen
(h * 20 + start_x - int(t * 20 * 0.3), start_y + t * 6 - v * 20)
for h, t, v in schieb
]
Code: Alles auswählen
second_last_plane = [
[
(t == anzahl_tiefe - 1 and random.random() >= 0.7)
or (v == anzahl_breite - 1 and random.random() >= 0.4)
for h in range(anzahl_breite)
] for t in range(anzahl_tiefe)
]
last_plane = [
[
missing or random.random() >= 2/3
for missing in row
] for row in second_last_plane
]
Code: Alles auswählen
hoehe = 200
breite = 200
start_x = breite // 2 - anzahl_breite * 10 + anzahl_tiefe * 3 + 7
start_y = hoehe // 2 + anzahl_hoehe * 10 - anzahl_tiefe * 3 - 7
full_plane = [[False] * anzahl_breite] * anzahl_tiefe
schieb_positionen = [
(start_x + h * 20 - t * 6, start_y + t * 6 - v * 20)
for v, plane in enumerate([full_plane] * (anzahl_hoehe - 2) + [second_last_plane, last_plane])
for t, row in enumerate(plane)
for h, missing in enumerate(row)
if not missing
]
soll = anzahl_breite * anzahl_tiefe * anzahl_hoehe
ergebnis = soll - len(schieb_positionen)
Code: Alles auswählen
full_cube = [full_plane] * (anzahl_hoehe - 2) + [second_last_plane, last_plane]
schieb_positionen = [
(start_x + h * 20 - t * 6, start_y + t * 6 - v * 20)
for v, plane in enumerate(full_cube)
for t, row in enumerate(plane)
for h, missing in enumerate(row)
if not missing
]
Ich beschäftige mich ja erst seit Januar diesen Jahres mit dem Thema - vielleicht ist da ja noch Hoffnung. Aber in 30 Jahren werde ich 98!Sirius3 hat geschrieben: Donnerstag 18. August 2022, 21:25 Der Trick ist, viel zu üben. Nach dreißig Jahren fällt einem das dann einfacher.
... erstaunlicherweise funktioniert es aber auch so.Sirius3 hat geschrieben: Freitag 19. August 2022, 07:58 Wenn `v` nicht definiert ist, `h` aber nicht benutzt wird, dann wird das ein trivialer Tippfehler sein
... hätte ich (ausnahmsweise) vor dem Posten nachgedacht, hätte ich eigentlich auch selbst drauf kommen können!Sirius3 hat geschrieben: Freitag 19. August 2022, 07:58 Und diese Animation läuft ja auf dem Rechner der Schüler, die einzigen mit Performance-Problemen macht also der Browser Deiner Schüler.
Für 8 Monate geht das ja schon ganz gut, geb die Hoffnung nicht aufPitwheazle hat geschrieben: Samstag 20. August 2022, 15:21 (Vielleicht sagt jetzt ja mal jemand zur Aufmunterung, dass das für 8 Moante ja schon ganz gut geht und dass ich die Hoffnung nicht aufgeben soll.)
Das ist sehr lieb von dir, danke schön.Dennis89 hat geschrieben: Samstag 20. August 2022, 18:59 Für 8 Monate geht das ja schon ganz gut, geb die Hoffnung nicht auf![]()