Bitte helfen: IndentationError expected an indented block

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
hani
User
Beiträge: 2
Registriert: Sonntag 30. März 2014, 13:09

bei "global uagent" steht IndentationError: expected an indented block
kann mich jemand helfen bitte. wo liegt das problem?

Code: Alles auswählen

def user_agent():
	global uagent
	uagent=[]
	uagent.append("uagent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14")
	uagent.append("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0")
	uagent.append("Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3")
	uagent.append("Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)")
	uagent.append("uagent=[]Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.7 (KHTML, like Gecko) Comodo_Dragon/16.1.1.0 Chrome/16.0.912.63 Safari/535.7")
	uagent.append("Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)")
	uagent.append("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1")
	return(uagent)
Zuletzt geändert von Anonymous am Sonntag 30. März 2014, 14:26, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt,
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Die Fehlermeldung ist dort recht eindeutig: deine Einrückung ist fehlerhaft. Entweder hast du gar keine Einrückung verwendet oder Tabs und Spaces vermischt. Verwende zum Einrücken immer vier Spaces, das ist Standard. Ggf. solltest du deinen Editor noch so einstellen, dass ein Tab durch vier Spaces ersetzt wird.

Noch ein paar allgemeine Sachen: setzte den Code hier im Forum doch bitte in Code-Tags, dann kann man den auch vernünftig lesen. Über dem Eingabefenster gibt es dazu entsprechende Buttons. Auch solltest du bei Fehlern immer die gesamte Fehlermeldung, also inklusive Traceback, hier posten und nicht nur den Teil, den du für relevant hältst. Da stecken noch viel mehr Informationen drin, mit denen du vielleicht noch nichts anfangen kannst, andere aber schon.

Auch solltest du dir gleich abgewöhnen "global" zu verwenden, das wird fast nie benötigt. Und wenn dir nicht vollkommen klar ist, dass du global an einer Stelle benutzen musst, dann ist das ein deutliches Zeichen dafür, dass du es nicht benutzen solltest. Werte betreten Funktionen über Parameter und verlassen Funktionen als Rückgabewert, ggf. wird der Zustand auch mittels Klassen verwaltet.
Das Leben ist wie ein Tennisball.
BlackJack

@hani: Diese ganzen `append()`-Aufrufe sind auch unsinnig. Das kann man doch viel einfacher gleich als *ein* Listenliteral schreiben, anstatt ein leeres Listenliteral hinzuschreiben und diese Liste dann Element für Element mit jeweils einem eigenen Methodenaufruf zu füllen. Das ist doch kein Java hier. :-)
hani
User
Beiträge: 2
Registriert: Sonntag 30. März 2014, 13:09

Vielen Danke für die rasche Antwort, aber kann mir jemand mal konkret den Fehler oder die richtige Schreibweise post?

Dank an die Spezialisten.....
Hani
BlackJack

@hani: Bei dem Quelltext so wie er jetzt im ersten Beitrag steht gibt es keinen Syntaxfehler.

Was mir noch zusätzlich zum bisher gesagten auffällt: `uagent` ist kein guter Name für die Liste. Bei so einer Abkürzung muss man raten wofür das `u` steht. Ausserdem ist da nicht nur *ein* „user agent” an den Namen gebunden, sondern eine Liste, also wäre ein passenderer Name `user_agents`.

Der Funktionsname ist auch nicht besonders gut, weil er wie ein Wert klingt und nicht wie eine Tätigkeit.

``return`` ist keine Funktion, also sollte man diese Anweisung auch nicht so schreiben wie man Funktionsaufrufe schreibt.

Edit: Der Wert, der in Zeile 8 der Liste hinzugefügt wird, soll nicht wirklich *so* aussehen, oder?
aibo
User
Beiträge: 3
Registriert: Montag 31. März 2014, 14:00

Hey,

leider weiß ich nicht, was du genau machen möchtest. Mit dem Code unten funktioniert es auf jeden Fall. Die Methode "user_agent()" liefert die ein Array zurück. Dieses Array kannst du dann durch einen Aufruf zuweisen. So bekommst du auch die Werte aus der Methode geliefert.

Code: Alles auswählen

def user_agent():
    uagent = ['uagent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14',
              'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0',
              'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3',
              'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)',
              'uagent=[]Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.7 (KHTML, like Gecko) Comodo_Dragon/16.1.1.0 Chrome/16.0.912.63 Safari/535.7',
              'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)',
              'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1'
              ];
    return uagent;
BlackJack

@aibo: Die Semikolons machen keinen Sinn, und den Namen `uagent` könnte man sich hier auch sparen und gleich die Liste als Ausdrück hinter das ``return`` schreiben. Und dann stellt sich natürlich als nächstes die Frage ob die Funktion wirklich Sinn macht, oder ob man diese Liste nicht einfach als Konstante definieren kann.
Antworten