Hallo zusammen:)
Ich arbeite gerade die Beispielmodelle von Gurobi durch und bin dabei auf eine Schwierigkeit gestoßen. Im Beispiel mip1.py (http://www.gurobi.com/documentation/8.1 ... p1_py.html) liefern die unteren Zeilen einen Fehler.
Ich gebe diese Zeilen ein:
except GurobiError as e:
print('Error code ' + str(e.errno) + ": " + str(e))
except AttributeError:
print('Encountered an attribute error')
Und bekomme diese Nachricht ausgegeben:
except:GurobiError as e:
^
SyntaxError: invalid syntax
Kann mir da jemand weiterhelfen? Und wozu genau brauche ich diese letzten Zeilen im Code überhaupt?
Vielen Dank im Voraus und liebe Grüße
Kristina
MIP Modell in Gurobi
Hallo Kristina,
es wäre super wenn du den Code in Code-Tags packen könntest (das Feld mit dem </> über dem Editor).
Ansonsten sieht die Zeile in der Fehlermeldung nicht wie die aus deinem Quellcode aus. Und da liegt das Problem.
es wäre super wenn du den Code in Code-Tags packen könntest (das Feld mit dem </> über dem Editor).
Ansonsten sieht die Zeile in der Fehlermeldung nicht wie die aus deinem Quellcode aus. Und da liegt das Problem.
Zuletzt geändert von sparrow am Freitag 4. Januar 2019, 10:35, insgesamt 1-mal geändert.
try/except wird verwendet um in Python Exceptions (Ausnahmen) abzufangen: https://docs.python.org/3/tutorial/erro ... exceptions
- __blackjack__
- User
- Beiträge: 14036
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@blondieatwork: Vergleich doch mal was Du da hinter „Ich gebe diese Zeilen ein“ geschrieben hast, mit dem was Du dann tatsächlich geschrieben hast und wo Du den Syntaxfehler bekommst. Zeichen für Zeichen. Da ist ein recht offensichtlicher Unterschied.
In der Python-Dokumentation ist fast auf jeder Seine oben rechts der Link zum Index. Da findet man dann unter „E“ und mit der Suchfunktion des Webbrowsers recht schnell Einträge zu „except“ & Co. Der Index ist praktisch wenn man nur den Namen eines Schlüsselwortes oder von etwas aus der Standardbibliothek hat, und nicht weiss wo genau in der Dokumentation man das nachlesen kann.
Ausserdem gibt es in der Python-Dokumentation ein Tutorial, das man mal durchgearbeitet haben sollte. Das hat ein ganzes Kapitel über Fehler und Ausnahmen: Errors and Exceptions.
Im vorliegenden Fall braucht man das ``try``/``except``-Konstrukt gar nicht. Das ist IMHO keine sinnvolle Fehlerbehandlung an der Stelle einen kompletten Traceback einfach nur durch eine eigene `print()`-Ausgabe zu ersetzen. Insbesondere die zweite Fehlerbehandlung ist total daneben. Beim `AttributeError` handelt es sich in aller Regel um einen Programmierfehler und den einfach mit ``print('Encountered an attribute error')`` zu ”behandeln” ist wohl so ziemlich das dämlichste was man machen. Möchte wissen was sich der Programmierer *dabei* gedacht hat. Wenn dieser Fall eintritt will man doch wissen welches Attribut und wo im Programmablauf genau da nicht existiert.
Da in Python auch Einrückung eine wichtige Rolle spielt, wäre es gut wenn Du Quelltext und Ausgaben die Quelltext enthalten, hier in den Beiträgen in ein Code-Tag packst. Das ist im vollständigen Editor die Schaltfläche mit der „</>“-Beschriftung. Oder man gibt es manuell ein, also vor dem Quelltext [ code ] und nach dem Quelltext [ /code ] (ohne die Leerzeichen in den eckigen Klammern). Das Ergebnis sieht dann so aus:
Und:
Dann sieht man durch die korrekte Ausrichtung des ^ auch besser an welcher Stelle genau der Compiler festgestellt hat, das da etwas nicht den syntaktischen Regeln entspricht. Der Fehler liegt dann irgendwo davor. In diesem Fall sogar sehr nah an dieser markierten Stelle. 
In der Python-Dokumentation ist fast auf jeder Seine oben rechts der Link zum Index. Da findet man dann unter „E“ und mit der Suchfunktion des Webbrowsers recht schnell Einträge zu „except“ & Co. Der Index ist praktisch wenn man nur den Namen eines Schlüsselwortes oder von etwas aus der Standardbibliothek hat, und nicht weiss wo genau in der Dokumentation man das nachlesen kann.
Ausserdem gibt es in der Python-Dokumentation ein Tutorial, das man mal durchgearbeitet haben sollte. Das hat ein ganzes Kapitel über Fehler und Ausnahmen: Errors and Exceptions.
Im vorliegenden Fall braucht man das ``try``/``except``-Konstrukt gar nicht. Das ist IMHO keine sinnvolle Fehlerbehandlung an der Stelle einen kompletten Traceback einfach nur durch eine eigene `print()`-Ausgabe zu ersetzen. Insbesondere die zweite Fehlerbehandlung ist total daneben. Beim `AttributeError` handelt es sich in aller Regel um einen Programmierfehler und den einfach mit ``print('Encountered an attribute error')`` zu ”behandeln” ist wohl so ziemlich das dämlichste was man machen. Möchte wissen was sich der Programmierer *dabei* gedacht hat. Wenn dieser Fall eintritt will man doch wissen welches Attribut und wo im Programmablauf genau da nicht existiert.
Da in Python auch Einrückung eine wichtige Rolle spielt, wäre es gut wenn Du Quelltext und Ausgaben die Quelltext enthalten, hier in den Beiträgen in ein Code-Tag packst. Das ist im vollständigen Editor die Schaltfläche mit der „</>“-Beschriftung. Oder man gibt es manuell ein, also vor dem Quelltext [ code ] und nach dem Quelltext [ /code ] (ohne die Leerzeichen in den eckigen Klammern). Das Ergebnis sieht dann so aus:
Code: Alles auswählen
except GurobiError as e:
print('Error code ' + str(e.errno) + ": " + str(e))
except AttributeError:
print('Encountered an attribute error')
Code: Alles auswählen
except:GurobiError as e:
^
SyntaxError: invalid syntax

„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
-
- User
- Beiträge: 10
- Registriert: Donnerstag 29. November 2018, 14:51
Vielen Dank für die Heinweise!
Es funktioneirt jetzt auch:)
Es funktioneirt jetzt auch:)