Cum să remediați o eroare de așteptare a unui bloc indentat? (Programare, Python, Visual Studio 2015)

L. Peters a intrebat.

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')

Comentarii

  • după ce deschideți orice bloc dați 4 spații pentru a indenta acel bloc, încercați. –  > Por bhansa.
  • Remediați eroarea blocului indentat prin remedierea blocului indentat. Python se bazează pe indentare pentru a descrie ce cod se află în ce blocuri. Dacă ați avea un if în interiorul unui bloc if fără indentare și ați spus elif, , cum ar ști Python care if elif este pentru? Cum ar ști Python dacă al doilea if este în interiorul sau în afara primului if? Indentarea clarifică ceea ce vreți să spuneți. –  > Por zondo.
  • Un tutorial de bază te-ar putea scuti de durere. tutorial oficial spune următoarele despre indentare: „indentarea este modul în care Python grupează declarațiile. […] Rețineți că fiecare linie din cadrul unui bloc de bază trebuie să fie indentată cu aceeași valoare.” –  > Por syntonym.
1 răspunsuri
Tom Karzes

Î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')

Comentarii

  • Editarea de către dvs. a șirurilor sale a cauzat o eroare de sintaxă. –  > Por zondo.
  • 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ă. –  > Por L. Peters.
  • @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. –  > Por Tom Karzes.
  • @L.Peters: Are un NameError: name 'raw_input' is not defined? Dacă da, utilizați Python3 și ar trebui să utilizați input() în schimb. –  > Por zondo.
  • Î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. –  > Por Tom Karzes.