Seite 1 von 1

Kann das jemand richtig stellen?

Verfasst: Freitag 30. November 2012, 22:33
von naj
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? :?

Re: Kann das jemand richtig stellen?

Verfasst: Freitag 30. November 2012, 22:38
von webspider
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).

Re: Kann das jemand richtig stellen?

Verfasst: Freitag 30. November 2012, 22:40
von 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.

Re: Kann das jemand richtig stellen?

Verfasst: Freitag 30. November 2012, 22:47
von jtschoch
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

Re: Kann das jemand richtig stellen?

Verfasst: Freitag 30. November 2012, 22:49
von naj
Prima jetzt klappts :) danke für die schnelle Hilfe!

Re: Kann das jemand richtig stellen?

Verfasst: Freitag 30. November 2012, 22:50
von jtschoch
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!"

Re: Kann das jemand richtig stellen?

Verfasst: Samstag 1. Dezember 2012, 14:34
von naj
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?

Re: Kann das jemand richtig stellen?

Verfasst: Samstag 1. Dezember 2012, 15:12
von 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.

Re: Kann das jemand richtig stellen?

Verfasst: Samstag 1. Dezember 2012, 15:29
von naj
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.