Môn Tin họcQuản lý học tập Tin học

Tìm lỗi trong chương trình phân loại chỉ số BMI học sinh

Lớp 10Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

Thang điểm 10 · 6 test case chấm tự động · 4 tiêu chí chấm

Trung tâm Y tế học đường muốn viết chương trình HealthTrack để phân loại thể trạng học sinh dựa vào chỉ số BMI = cân nặng (kg) / (chiều cao (m))2, theo quy tắc:

  • BMI < 18.5: Thiếu cân
  • 18.5 ≤ BMI < 23: Bình thường
  • 23 ≤ BMI < 25: Thừa cân
  • BMI ≥ 25: Béo phì

Một bạn học sinh đã viết chương trình sau nhưng khi chạy thử với BMI = 27 lại in ra Béo phì đúng, còn khi chạy với BMI = 24 (đáng lẽ phải là Thừa cân) thì chương trình lại in ra Béo phì - sai kết quả:

  • data = input().split()
  • w = float(data[0])
  • h = float(data[1])
  • bmi = w / (h * h)
  • bmi_r = round(bmi, 1)
  • if bmi < 18.5:
  • print('BMI =', bmi_r, '- Thieu can')
  • elif bmi < 23:
  • print('BMI =', bmi_r, '- Binh thuong')
  • elif bmi < 18.5:
  • print('BMI =', bmi_r, '- Thua can')
  • else:
  • print('BMI =', bmi_r, '- Beo phi')

Em hãy tìm ra dòng lệnh bị sai (một điều kiện elif viết nhầm khiến nhánh Thừa cân không bao giờ được thực hiện), sửa lại cho đúng và viết lại chương trình hoàn chỉnh.

Input: một dòng gồm 2 số thực cân nặng (kg) và chiều cao (m), cách nhau bởi dấu cách.

Output: một dòng theo định dạng BMI = <giá trị làm tròn 1 chữ số> - <phân loại>.

InputOutput
60 1.7BMI = 20.8 - Bình thường
45 1.6BMI = 17.6 - Thiếu cân
70 1.6BMI = 27.3 - Béo phì
66.7 1.7BMI = 23.1 - Thừa cân
#if...elif...else#rẽ nhánh#gỡ lỗi#phân tích lỗi logic#category:tu_duy_phan_bien#difficulty:analyzing

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài