Cần giúp đỡ về hàm lặp
Em mới học python, hiện em đang tìm hiểu về hàm lặp và muốn ứng dụng nó vào chương trình em tự nghĩ ra.
Chương trình này ban đầu là một bài tập tính chỉ số BMI, sau khi học hàm if, em đã có thể phân chia làm 2 giới tính và cho phép người dùng tự chọn giới tính khi nhập vào, hàm try đã giúp em loại trường hợp người dùng nhập chữ vào.
Bây giờ, em muốn dùng vòng lặp để giới hạn lựa chọn cho người dùng là chỉ chọn 1 hoặc 2, nếu đánh số khác thì nó sẽ hỏi lại cho tới khi họ đánh 1 hoặc 2 thì thôi. Tuy nhiên, khi em viết thì kể cả khi đánh 1 hoặc 2 vô thì nó vẫn hỏi vậy, em muốn hỏi em đã đánh sai chỗ nào?. Đây là code của em.
# Chuong trinh tinh BMI va tra ket qua theo gioi tinh
ten = raw_input("Chao ban, ban ten la: ")
gioitinh = raw_input("Ban la nam hay nu (1-nam/2-nu): ")
# Ben duoi la doan bi loi
while True:
if gioitinh == 1 or gioitinh == 2:
break
raw_input("Hay nhap 1 voi nam hoac 2 voi nu: ")
# Phan ben duoi da chay
chieucao = float(raw_input("Nhap chieu cao cua ban (m): "))
cannang = float(raw_input("Nhap can nang cua ban (kg) : "))
bmi = round(cannang / (chieucao ** 2), 2)
try:
luachon = int(gioitinh)
print "Chieu cao cua %s la %s va can nang cua ban la %s."% (ten, chieucao, cannang)
print "Chi so bmi cua ban la: ",bmi
if luachon == 1:
if bmi < 20 : print "Nguoi duoi can"
elif bmi < 25 : print "Nguoi binh thuong"
elif bmi < 30 : print "Nguoi qua can"
else: print "Nguoi beo phi"
else:
if bmi < 18 : print "Nguoi duoi can"
elif bmi < 23 : print "Nguoi binh thuong"
elif bmi < 30 : print "Nguoi qua can"
else: print "Nguoi beo phi"
except:
print "Nhap 1 hoac 2"
Bạn ép kiểu gioitinh la int nhé :-3
Mình ép giới tính bên dưới để dùng hàm try á, nếu nó int không đc thì nó sẽ báo lỗi ở cái lệnh execpt bên dưới
Không có nói bên dưới, nhìn lên trên đi. Khi bạn dùng raw_input thì dữ liệu nhập vào đều là String mà giờ bạn đi so sánh với 1,2 là kiểu int thì tất nhiên nó ko break được rồi.
A, được rồi, tks bác, giờ thì cái hàm kiểm tra giá trị chữ đi tong rồi, để em tìm hiểu tiếp vậy