Am încercat să creez un calculator BMI în Python, dar când am rulat programul, acesta spune: „IndentationError: expected an indented block”. Se spune că eroarea este în linia 7, dar ce am greșit? Folosesc Python 3.5.1.
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')
În Python, declarațiile subordonate sunt identificate prin nivelul de indentare, spre deosebire de parantezele curly braces sau cuvintele cheie begin/end folosite de unele alte limbaje. Ca atare, indentarea corectă în Python este mai mult decât o simplă convenție stilistică, ci este de fapt necesară pentru o funcționalitate corectă. În cazul dumneavoastră, trebuie să indentați instrucțiunile subordonate. Încercați următoarele:
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')
- Editarea de către dvs. a șirurilor sale a cauzat o eroare de sintaxă. – > .
- Mulțumesc că mi-ai răspuns la întrebare, dar acum am o altă problemă: programul poate rula, dar spune că nu știe ce înseamnă float(raw_input()). Am schimbat float în int, dar nici asta nu funcționează. – > .
- @zondo Mulțumesc, de fapt nu încercasem să îl încarc. Șirurile originale aveau
'...you've...'
în ele, ceea ce a cauzat erori de sintaxă. Văd acum că postul a fost modificat pentru a folosi'...you have...'
în schimb, așa că mi-am editat răspunsul în mod corespunzător. – > . - @L.Peters: Are un
NameError: name 'raw_input' is not defined
? Dacă da, utilizați Python3 și ar trebui să utilizațiinput()
în schimb. – > . - Îmi pare rău, au existat câteva erori de sintaxă suplimentare în postarea originală pe care le-am corectat și eu. Încă mai aveți probleme? Acest lucru ar trebui să funcționeze în Python 2 acum. – > .
if
în interiorul unui blocif
fără indentare și ați spuselif
, , cum ar ști Python careif
elif
este pentru? Cum ar ști Python dacă al doileaif
este în interiorul sau în afara primuluiif
? Indentarea clarifică ceea ce vreți să spuneți. – > Por zondo.