PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Python] IndentationError: expected an indented block



PancakeBear
09.09.2010, 10:56
Hallo Leute,

ich fange grade an Python zu coden (Python Version : 2.7).
Hier is der Scriptcode:


#! usr/bin/python

import sys

def explain(nameofme):
print "Das ist nur ein Test!"

#print "Addition = " + nameofme + "1 + 2 Result = 3"
#print "Subtraktion : " +nameofme+ "1 - 2 Result = -1"
#print "Division : " +nameofme+ "1 / 2 Result = 0.5"
#print "Multiplication : " +nameofme+ "1 * 2 Result = 2"


def Calc(erstezahl,zeichen,zweitezahl):
print "Result : "
if zeichen == '+':
print (erstezahl + zweitezahl)e
elif zeichen == '-':
print(erstezahl - zweitezahl)
elif zeichen == '/':
print (erstezahl / zweitezahl)
else: zeichen == '*':
print (erstezahl * zweitezahl)
return



print ('\n######################################')
print ('\n### Easy Calculator by Chillerz :) ###')
print ('\n######################################')

if len(sys.argv) != 4:
explain(sys.argv[0])
else:
Calc(sys.argv[1],sys.argv[2],sys.argv[3])

exit(0)Ich hab schon gegoogelt und hab nicht gefunden :(
Hier der Fehler:


C:\Python27>python.exe calc.py -h
File "calc.py", line 9
print "Das ist nur ein Test!"
^
IndentationError: expected an indented block

Kennt jemand eine Lösung?
Danke im Voraus an alle Antworten.

Mfg Chillerz.

sn0w
09.09.2010, 11:05
Kenn mich jetzt mit python nicht aus, aber bei allen anderen prints verwendest du Klammern, vielleicht liegts daran :D

MfG

PancakeBear
09.09.2010, 11:08
Danke für die Antwort... :)
Das hab ich schon probiert klappt nicht. :(
Kennt jemand eine andere Lösung?

Mfg Chillerz.

0x1cedd1ce
09.09.2010, 11:19
Wenn du schon python lernst, dann lern gleich python 3. python 2.7 wird nicht mehr weiterentwickelt.
geh mal auf die python-seite Python Programming Language – Official Website (http://www.python.org) da gibt es viele gute tutorials. da wird dann auch erklärt, das einrückungen im pythoncode zum syntax dazugehören.

LuLu-X
09.09.2010, 11:25
Wie OpCodez (http://free-hack.com/member.php?u=67508) schon sagte, fehlt dir das Einrücken. Nicht nur an deinen Funktionen (def) sondern auch an den if's.
Zum Einrücken kannst du Tabs, aber auch Leerzeichen nehmen, je nachdem was dir lieber gefällt, du solltest jedoch bei einer Methode bleiben, da Python sonst auch meckert.
Zur Frage Klammern an den prints, dass ist Python egal.
Grüße

PancakeBear
09.09.2010, 11:29
Wenn du schon python lernst, dann lern gleich python 3. python 2.7 wird nicht mehr weiterentwickelt.
geh mal auf die python-seite Python Programming Language – Official Website (http://www.python.org) da gibt es viele gute tutorials. da wird dann auch erklärt, das einrückungen im pythoncode zum syntax dazugehören.

Ich habs einfach mal in beidem ausgeführt hat beides net geklappt. Natürlich werde ich in Python 3.0 proggen x)

//Edit: Achtung! in Python 3.0 ist print() eine Function also muss mit Klammern geschrieben sein. Danke ich kapier das jetzt mit dem Einrücken.

Mfg Chillerz.

0x1cedd1ce
09.09.2010, 13:29
um probleme zu vermeiden musst du dann am anfang der datei statt:
#! usr/bin/python
besser
#! usr/bin/python3
da python auch python 2.7 sein kann.

PancakeBear
09.09.2010, 17:19
Is eigentlich egal das ist ein Kommentar :)
Danke trotzdem :p

Mfg Chillerz.

zin
09.09.2010, 17:33
Das ist ein Shebang.
Shebang – Wikipedia (http://de.wikipedia.org/wiki/Shebang)

Informier dich erstmal, bevor du widersprichst.

Starflow
09.09.2010, 18:04
2.4) Strengstens verboten:
...
– ein kompletter Quote des Vorposters - man kann auch normal antworten
....

Informiere dich erst mal bevor du Fullquotest.

Und da Windows kein unixoides OS ist, ist es nunmal in dem Fall nur ein Kommentar. :P

PancakeBear
09.09.2010, 20:59
Danke Zin für den Wikipedia Link! :)
Ich wusste garnicht das das Shebang heisst... :(

@Starflow : Glaub mir ich hab auch schon zu viel Fullgequoted :'( | Danke trotzdem ^^
^---- und ich habe schon viele Fullquotes gelöscht... -BlackBerry

Zum Problem: Das Problem war wie gesagt einrücken. Am besten man macht eine "if" Abfrage so:


if zeichen == '+': print(erstezahl + zweitezahl)Und der Script Code war sowieso falsch. Weil die sys.argv's nicht in int() drin waren.

Das Problem hatt sich gelöst :)
Danke an alle Leute die mir geantwortet haben!

Mfg Chillerz.

H4x0r007
12.09.2010, 22:56
In Python werden statt if und endif bzw. if und geschweifte Klammern Einrückungen verwendet, um einen Block zu kennzeichen.


def testFunktion():
print "Ein Text"
print "In der TestFunktion"

print "Ein Text außerhalb der TestFunktion"
testFunktion()Willst du If-Abfragen oder Schleifen ineinander verschachteln, musst du doppelt einrücken:


def testFunktion(varPrint):
if varPrint > 0:
print "Ein Text"
print "In der TestFunktion"

print "Ein Text außerhalb der TestFunktion"
testFunktion(1)

hersch24
13.09.2010, 14:13
ist das automatisch das keine Einrückungen angezeigt werden auf f-h ? oder hast du keine gemacht ? wie der Frankenbruder über mir bereits gesagt hat MUSST du in Python immer richtige einrückungen setzen. Benutze NUR einrückungen und keine extra Klammern. Shebang ist wurst und die Python Version passt mit der print Syntax auch. Überprüfe einfach die Einrückungen nach den Anweisungen. Eine anständige IDE wie Netbeans oder Eclips macht das automatisch.

PancakeBear
15.09.2010, 16:15
Danke , ja es war wegen dem Einrücken...
Hatt sich wie gesagt gelöst :D


Mfg Chillerz.

H4x0r007
15.09.2010, 16:47
ist das automatisch das keine Einrückungen angezeigt werden auf f-h ? oder hast du keine gemacht
Ich habe keine Einrückungen bei dem Beispiel gemacht, sondern Leerzeichen. Natürlich müssen Tabs verwendet werden, wenn der Code in Python lauffähig sein soll.

Frankenbruder
Wohlauf, die Luft geht frisch und rein :D


Shebang ist wurst
Shebang ist dann wichtig, wenn du das Script unter Unix-basierenden Systemen direkt ausführen willst. Du kannst ja an den Anfang vom Script einfach folgendes einfügen:

#!/usr/bin/python
und du bist auf der sicheren Seite

LuLu-X
15.09.2010, 17:42
Ich habe keine Einrückungen bei dem Beispiel gemacht, sondern Leerzeichen. Natürlich müssen Tabs verwendet werden, wenn der Code in Python lauffähig sein soll.


Das ist falsch, du kannst natürlich auch Leerzeichen nutzen (mehrere dann). Der Style Guide auf python.org schreibt auch, dass man Spaces nutzen sollte


Indentation
Use 4 spaces per indentation level.
( PEP 8 -- Style Guide for Python Code (http://www.python.org/dev/peps/pep-0008/) )
Vorallem "nett" da viele Editoren auch die "Übersetzung" von Tab -> Space unterstützen, was in Projekten bei denen mehrere Leute programmieren interessant ist.

Grüße