2016-03-27 15 views
-2

Ich habe versucht, einen BMI-Rechner in Python zu erstellen, aber wenn ich das Programm ausführe, heißt es: 'IndentationError: erwartet einen eingerückten Block'. Es heißt, dass der Fehler in Zeile 7 ist, aber was habe ich falsch gemacht? Ich verwende Python 3.5.1Wie behebt man einen erwarteten Blockfehler?

print ('Give your weight in kg: ') 
weight_kg = float(raw_input()) 
print ('Give your length in meters: ') 
length_meters = float(raw_input()) 
bmi = weight_kg/(length_meters * length_meters) 
if bmi <= 18.5: 
print ('Your BMI is'), bmi, ('what means that you have got underweight') 
elif bmi > 18.5 and bmi <= 25: 
print ('Your BMI is'), bmi, ('what means that you have got a normal weight') 
elif bmi > 25 and bmi < 30: 
print ('Your BMI is'), bmi, 'what means that you have got overweight') 
elif bmi >= 30: 
print ('Your BMI is'), bmi, ('what means that you have got obese') 
+1

nach dem Öffnen eines beliebigen Blocks geben Sie 4 Leerzeichen, um diesen Block einzurücken, versuchen Sie es. – bhansa

+3

Sie beheben den eingerückten Blockfehler, indem Sie den eingerückten Block korrigieren. Python stützt sich auf Einrückung, um zu beschreiben, welcher Code in welchen Blöcken ist. Wenn Sie ein 'if' innerhalb eines' if' ohne Einrückung und 'elif' hätten, wie würde Python dann wissen, für welches' if' das 'elif' gedacht ist? Wie würde Python wissen, ob das zweite "if" innerhalb oder außerhalb des ersten "if" liegt? Einrückung macht deutlich, was Sie meinen. – zondo

+3

Ein grundlegendes Tutorial könnte Ihnen einige Schmerzen ersparen. Das [offizielle Tutorial] (https://docs.python.org/3.5/tutorial/introduction.html#first-step-towards-programming) sagt Folgendes über die Einrückung: "Einrückung ist Pythons Art, Anweisungen zu gruppieren. [. ..] Beachten Sie, dass jede Zeile innerhalb eines Basisblocks um den gleichen Betrag eingerückt werden muss. " – syntonym

Antwort

1

In Python, werden untergeordnete Aussagen durch ihre Einrückungsebene identifiziert, im Gegensatz zu geschweiften Klammern oder Beginn/Ende Schlüsselwörter von einigen anderen Sprachen verwendet. Daher ist die richtige Einrückung in Python mehr als nur eine stilistische Konvention, sondern wird tatsächlich für die korrekte Funktionalität benötigt. In Ihrem Fall müssen Sie Ihre untergeordneten Anweisungen einrücken. Versuchen Sie Folgendes:

print ('Give your weight in kg: ') 
weight_kg = float(input()) 
print ('Give your length in meters: ') 
length_meters = float(input()) 
bmi = weight_kg/(length_meters * length_meters) 
if bmi <= 18.5: 
    print ('Your BMI is', bmi, 'what means that you have got underweight') 
elif bmi > 18.5 and bmi <= 25: 
    print ('Your BMI is', bmi, 'what means that you have got a normal weight') 
elif bmi > 25 and bmi < 30: 
    print ('Your BMI is', bmi, 'what means that you have got overweight') 
elif bmi >= 30: 
    print ('Your BMI is', bmi, 'what means that you have got obese') 
+0

Ihre Bearbeitung seiner Strings hat einen Syntaxfehler verursacht. – zondo

+0

Vielen Dank für die Beantwortung meiner Frage, aber jetzt habe ich ein anderes Problem: Das Programm kann ausgeführt werden, aber es sagt, dass es nicht weiß, was float (raw_input()) bedeutet. Ich habe den Float in int geändert, aber das funktioniert auch nicht. –

+0

@zondo Danke, ich hatte nicht wirklich versucht, es zu laden. Die ursprünglichen Strings hatten "... du hast ..." in ihnen, was die Syntaxfehler verursachte. Ich sehe jetzt, dass der Beitrag geändert wurde, um "... du hast ..." zu verwenden, also habe ich meine Antwort passend bearbeitet. –

Verwandte Themen