Ist es möglich irgendwie zufällig Variablen bzw Funktionen auszugeben?
Ich kenne nur Random.. damit kann man ja zufalls Zahlen ausgeben.. aber ist es auf irgendeine Weise Möglich damit oder mit einem anderen Modul zufalls Funktionen/Variablen auszugeben?
Sinn dahinter... ich möchte das sich mein Strichmännchen jetzt zufällig über den Bildschirm bewegt.
Bis jetzt läuft er auf und ab rechts und links in einem Kreis.. Mit mehreren Funktionen die verschiedene Richtungen angeben, könnte man dann vielleicht mit nem Zufallsgenerator dafür sorgen das die eine oder andere Richtung gewählt wird also die Funktion mit Richtungsangabe..
Ist soetwas möglich? Wenn ja wie? Danke
Zufällige Funktionen/Variablen ausgeben lassen?
@M&M's_Knabberer
Schau' Dir doch mal die Dokumentation zum `random`-Modul an. Da wirst Du mehrere Möglichkeiten finden...
Schau' Dir doch mal die Dokumentation zum `random`-Modul an. Da wirst Du mehrere Möglichkeiten finden...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
-
- User
- Beiträge: 34
- Registriert: Sonntag 27. September 2015, 17:05
Danke, ich habe es jetz mal so versucht:
der zeigt mir dann :
Traceback (most recent call last):
line 64, in <module> wahl()
line 48, in wahl x = x+5
UnboundLocalError: local variable 'x' referenced before assignment
also es läuft ohne Funktion, mit der Funktion funktioniert es nicht..
kann mir jemand sagen was ich falsch gemacht habe? Danke
Code: Alles auswählen
import random
random.seed()
def wahl():
a = random.randint(1,2)
b=2
if a==b:
while True:
for zaehler in range (1,10):
x = x+5
lauf()
break
else:
while True:
for zaehler in range (1,10):
x = x+5
lauf()
for zaehler in range (1,10):
y = y+5
lauf()
for zaehler in range (1,10):
x = x-5
lauf()
for zaehler in range (1,10):
y = y-5
lauf()
break
while True:
wahl()
der zeigt mir dann :
Traceback (most recent call last):
line 64, in <module> wahl()
line 48, in wahl x = x+5
UnboundLocalError: local variable 'x' referenced before assignment
also es läuft ohne Funktion, mit der Funktion funktioniert es nicht..
kann mir jemand sagen was ich falsch gemacht habe? Danke
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
In Python ist (fast) alles ein Objekt. Man kann daher auch Funktionen in Container stecken und diese damit dynamisch aufrufbar machen.
Anbei ein kleines Beispiel, das das verdeutlicht (natürlich sind die Funktionen so wenig sinnvoll!);
Anbei ein kleines Beispiel, das das verdeutlicht (natürlich sind die Funktionen so wenig sinnvoll!);
Code: Alles auswählen
In [1]: def move_up():
...: print("Bewege mich hoch")
...:
In [2]: def move_down():
...: print("Bewege mich runter")
...:
In [3]: from random import choice
In [4]: movements = (move_up, move_down)
In [5]: for _ in range(5):
...: choice(movements)()
...:
Bewege mich runter
Bewege mich runter
Bewege mich hoch
Bewege mich runter
Bewege mich hoch
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 34
- Registriert: Sonntag 27. September 2015, 17:05
Code: Alles auswählen
import random
random.seed()
while True:
a = random.randint(1,2)
b=2
if a==b:
while True:
for zaehler in range (1,10):
x = x+5
lauf()
break
else:
while True:
for zaehler in range (1,10):
x = x+5
lauf()
for zaehler in range (1,10):
y = y+5
lauf()
for zaehler in range (1,10):
x = x-5
lauf()
for zaehler in range (1,10):
y = y-5
lauf()
break
@Hyperion
meinst du das man die Funktionen in einer Liste verpacken soll?
zb zwei listen eine mit a = [funktion()] zweite mit b = [funktion()] und die dann mit random zufällig aufrufen kann? Das wäre ja auch sehr nützlich, wenn du sowas meinst ?
@M&M's_Knabberer: Was sollen denn diese unsinnigen ``while True:``-Schleifen mit den ``breaks`` die genau einmal durchlaufen?
Und nimm das überflüssige `random.seed()` wieder heraus. Das hat keinen beziehungsweise im schlimmsten Fall den Effekt das mehrere Läufe immer die gleiche Zufallsfolge haben, also das Gegenteil von dem was Du wahrscheinlich dachtest was dieser Aufruf bewirkt.
Und nimm das überflüssige `random.seed()` wieder heraus. Das hat keinen beziehungsweise im schlimmsten Fall den Effekt das mehrere Läufe immer die gleiche Zufallsfolge haben, also das Gegenteil von dem was Du wahrscheinlich dachtest was dieser Aufruf bewirkt.
-
- User
- Beiträge: 34
- Registriert: Sonntag 27. September 2015, 17:05
ja hast recht die While Schleifen waren überflüssig.
Läuft jetz ganz gut danke
hab dann versucht noch ne Zweite figur einzufügen.. aber dann passiert folgendes: erst läuft die eine Figur auf dem Bildschirm, dann die zweite..
nicht ganz das was ich mir gedacht habe. Schätze mal mit den Sprites wird das dann wohl gleichzeitig gehen ok dann werd ich mich darin mal einarbeiten.
Läuft jetz ganz gut danke
hab dann versucht noch ne Zweite figur einzufügen.. aber dann passiert folgendes: erst läuft die eine Figur auf dem Bildschirm, dann die zweite..
nicht ganz das was ich mir gedacht habe. Schätze mal mit den Sprites wird das dann wohl gleichzeitig gehen ok dann werd ich mich darin mal einarbeiten.
@M&M's_Knabberer: Wenn etwas nicht so läuft wie Du es Dir gedacht hast, dann musst Du herausfinden warum und nicht hoffen das das auf magische Weise anders wird. Denn auch bei Sprites verhält sich Python so wie es sich halt grundsätzlich verhält: Wenn man ein Programm schreibt bei dem zwei Sachen nacheinander gemacht werden, dann werden die halt auch nacheinander gemacht. Wenn man will das sie ”gleichzeitig” gemacht werden, dann muss man das auch so schreiben.