Seite 1 von 1
Fehler beim random module
Verfasst: Samstag 9. Mai 2015, 20:57
von nb5code
Hallo ich arbeite gerade an einem Spiel. Dabei möchte ich mir vier Farben( rot, gruen, blau, gelb ) mischen und ausgeben lassen
Code: Alles auswählen
from random import *
def getRandomColors():
for i in range(4):
print random.choice(["green", "blue", "yellow", "red"])
nur komischer Weise kommt dabei ein Fehler zustande :
Code: Alles auswählen
File "C:\IT\python\Game\src\Game.py", line 5
print random.choice(["green", "blue", "yellow", "red"])
^
SyntaxError: invalid syntax
könnt ihr mir da vielleicht helfen ?
Danke!

Re: Fehler beim random module
Verfasst: Samstag 9. Mai 2015, 21:09
von cofi
Du hast zwei Fehler: Du stern-importierst `random` und damit gibt es kein `random.choice`. Bevor das aber passiert: Du benutzt Python 3 als waere es Python 2. Da fehlen Klammern beim `print` Aufruf.
Re: Fehler beim random module
Verfasst: Samstag 9. Mai 2015, 21:18
von /me
Dann gibt es auch noch einen Schönheitsfehler und einen semantischen Fehler. getRandomColors sollte laut PEP-8 get_random_colors heißen. Zudem sollte eine Methode mit get im Namen auch etwas zurückgeben, diese Methode gibt aber nur Werte aus.
Re: Fehler beim random module
Verfasst: Sonntag 10. Mai 2015, 09:43
von nb5code
ich Versuche eszu verbessern danke
Re: Fehler beim random module
Verfasst: Sonntag 10. Mai 2015, 09:45
von nb5code
ich dachte das sternchen importiert alles aus der Bibliothek
Re: Fehler beim random module
Verfasst: Sonntag 10. Mai 2015, 10:21
von nezzcarth
nb5code hat geschrieben:ich dachte das sternchen importiert alles aus der Bibliothek
Genau das tut es auch: es importiert alles
aus der Bibliothek in den öffentlichen Namensraum. 'import random' importiert die Bibliothek
als solches, d.h. als eigenen Namensraum. Du machst einen Sternchenimport und versuchst 'choice' aus dem Namensraum random, der gar nicht existiert, aufzurufen. Allerdings sind Sternchenimport schlechter Stil. Entweder du importierst die gesamte Bibliothek, oder die spezifischen Namen, die du brauchst, z.B. 'from random import choice'.
Re: Fehler beim random module
Verfasst: Montag 11. Mai 2015, 08:45
von Hyperion
nb5code hat geschrieben:Hallo ich arbeite gerade an einem Spiel. Dabei möchte ich mir vier Farben( rot, gruen, blau, gelb ) mischen und ausgeben lassen
Dann ist Dein Ansatz auch an sich verkehrt und Du suchst ``random.shuffle``!
Unabhängig davon noch kurz eine Anmerkung zum Stil: Wenn man einen Rückgabewert in Python nicht braucht, so sollte man diesen per Konvention als Unterstrich benennen, bei Dir also:
Das zeigt dem Leser sofort an, dass der Name nicht mehr gebraucht wird und lenkt den Fokus nicht in falsche Richtungen. Bei Dir würde man erst einmal nach dem ``i`` im Schleifenrumpf suchen, bevor man kapiert, dass es auf das ``i`` gar nicht ankommt.