Kann das jemand richtig stellen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
naj
User
Beiträge: 4
Registriert: Freitag 30. November 2012, 22:28

Hi,

ich bin ein absoluter Python Anfänger und befasse mich eigentlich nur wegen der Uni damit. Jetzt hab ich versucht, ein kleines Programm zu schreiben, was aber nicht funktioniert:

Code: Alles auswählen

a = raw_input ('Zahl eingeben ')

if (a = 1):
    print "Zahl 1"

if (a = 2):
    print "Zahl 2"

if (a = 3):
    print "Zahl 3"
wie es funktionieren sollte: Man wird aufgefordert, eine Zahl einzugeben (1-3) und je nach dem soll der passende Ausdruck geprintet werden. Der print-Befehl soll später ersetzt werden, aber mir geht es jetzt erst mal ums Verständis.

Kann mir jemand sagen, wie ich das machen müsste? :?
Zuletzt geändert von Anonymous am Freitag 30. November 2012, 22:36, insgesamt 1-mal geändert.
Grund: Code-Formatierung korrigiert
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Ein einzelnes Gleichheits-Zeichen weist einen Wert zu, ein doppeltes vergleicht auf Gleichheit. Du willst letzteres (und if, elif, else, noch besser natürlich Dispatching).
lunar

Bitte lese das offizielle Tutorial, Abschnitt 4.1 über If-Anweisungen.

Klammern um die Bedingung sind im Übrigen nicht nötig und werden als schlechter Stil angesehen.

Gewöhne Dir bitte an, Python-Quelltext mit korrekter Formatierung zu zeigen. Ansonsten geht die Einrückung verloren, so dass auch die Bedeutung des Programms nicht mehr ersichtlich ist. Nutze dazu den "python"-Knopf direkt über dem Eingabefeld.
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Hallo die beste Variante dies lösen wäre dies:

Wenn du methoden aufrufen willst:

Code: Alles auswählen

a = raw_input ('Zahl eingeben ')
func = {1:def1, 2:def2}
func[int(auswahl)]()
oder deine variante:
Dein Problem ist du vergleicht int mit str

Code: Alles auswählen

a = raw_input ('Zahl eingeben ')

if a == 1:
    print "Zahl 1"

if a == 2:
    print "Zahl 2"

if a == 3:
    print "Zahl 3"
es gibt mehere Lösungen:
1. in String

Code: Alles auswählen

a = raw_input ('Zahl eingeben ')

if a == "1":
    print "Zahl 1"

if a == "2":
    print "Zahl 2"

if a == "3":
    print "Zahl 3"

Code: Alles auswählen

a = raw_input ('Zahl eingeben ')
try:
    a = int(a)
    if a == 1:
        print "Zahl 1"

    elif a == 2:
        print "Zahl 2"

    elif a == 3:
        print "Zahl 3"

    else:
        print "Falsche Zahl"
except:
    print "Dies ist keine Zahl!"
Gruß jtschoch
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
naj
User
Beiträge: 4
Registriert: Freitag 30. November 2012, 22:28

Prima jetzt klappts :) danke für die schnelle Hilfe!
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

bitte, ordentlicher so

Code: Alles auswählen

a = raw_input ('Zahl eingeben ')
try:
    a = int(a)
    if a == 1:
        print "Zahl 1"

    elif a == 2:
        print "Zahl 2"

    elif a == 3:
        print "Zahl 3"

    else:
        print "Falsche Zahl"
except ValueError:
    print "Dies ist keine Zahl!"
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
naj
User
Beiträge: 4
Registriert: Freitag 30. November 2012, 22:28

nachdem das ja jetzt so toll geklappt hat, hatte ich gedacht, man könnte das jetzt einfach importieren mit

Code: Alles auswählen

import sys
sys.path.append("C:\Python25")

import dateiname
und wird dann aufgefordert, eine Zahl einzugeben. Aber da habe ich wahrscheinlich auch zu einfach gedacht. Ich hätte ja gern in den ganzen Tutorials danach gesucht aber ich weiß ja nicht so wirklich nach was ich suchen muss...

Kann mir jemand weiterhelfen?

und noch ne kurze Frage: Ich brauche die Zahlen von 1 bis 350, muss die alle manuell eintippen oder gibs da ein Trick, so was wie Autoausfüllen in Excel?
BlackJack

@naj: Falls `dateiname` tatsächlich für den Dateinamen steht, dann funktioniert das natürlich nicht. Nur der Name vor der Dateinamenserweiterung ist der Modulname. Und die Datei muss in einem Pfad in `sys.path` liegen, wobei dort in der Regel auch der aktuelle Arbeitspfad des Prozesses enthalten ist.

Den Pfad zur Python-Installation sollte man nicht selber zu `sys.path` hinzufügen müssen. Wenn die Module aus der Standardbibliothek nicht erreichbar sind, stimmt etwas mit der Installation nicht.

Edit: Das importieren von Modulen sollte keine Seiteneffekte haben, wie zum Beispiel dass dadurch der Ablauf eines (Teil)Programms ausgelöst wird. Das ist unsauber und man kann so ein Modul schlecht wiederverwenden, den Code mehrfach ausführen, interaktiv testen, und so weiter. Der Code darin sollte in eine Funktion gesteckt und die dann vom importierenden Modul ausgeführt werden.
naj
User
Beiträge: 4
Registriert: Freitag 30. November 2012, 22:28

Mhm gibt es dafür eine Anleitung? Will euch ja nicht die ganze Arbeit machen lassen ;)

Mein Ziel ist, dass der Benutzer nur noch sieht "a = ?" und durch die Eingabe einer Zahl dann das Ergebnis von der Datei (Skript?,Modul?, mit den Namen hab ichs noch nicht so...) im Hintergrund produziert wird. Soll eben auch etwas schön aussehen.
Antworten