Hỏi về bài tập trong python 3


Mấy bác cho e hỏi là sao cái codefun nó cứ báo sai hoài ạ em sai ở chỗ nào các bác có thể chỉ cho em sáng mắt ra được không ạ em cảm ơn nhiều

Làm tròn đến mấy dấu phẩy động đề cũng không nói thì làm sao mà biết được, input output cũng như nháp, k hiểu sao đề đó lại được duyệt lên cái website đó

Theo mình là xem lại kiểu dữ liệu thôi.
Vì như code của bạn.
S là kiểu float

1 Like

mình đã thử ép ra kiểu int và in ra vẫn sai ạ :<

Vì công thức của bạn sai.

Xem lại công thức Heron:

1 Like

Trên e viết đúng theo heron ạ a có thể chỉ rõ e sai ở đâu không ạ

Bạn thử thay 1/2 bằng 0.5 thì sẽ đúng nhé.

Theo cá nhân mình nghĩ (mình cũng mới tự học thôi):
Thứ tự thực hiện phép tính diện tích theo công thứ Heron của bạn sẽ như sau:
1/ Tính p-a
2/ Tính p-b
3/ Tinh p-c
4/ Tính 1/2
5/ Tính p*(p-a)*(p-b)*(p-c)
6/ Tính căn bậc n của kết quả tính ra ở bước 5 với n là kết quả của bước 4

Vấn đề xảy ra ở bước 4. Kết quả 1/2 bị gán vào 1 biến tạm do Python tự định nghĩa, biến này có kiểu dữ liệu số theo mặc định là int, do đó 1/2 = 0.5 => 0
Điều này dẫn tới ở bước 6, khi tính, kết quả căn bậc mũ n với n là 0 sẽ luôn cho đáp án là 1

Các bạn khác nếu có lý giải khác thì chia sẻ để mình học hỏi thêm nhé.
Cảm ơn các bạn :smiley:

1/2 trong Python 3 là 0.5 nhé.

Test trên IDLE Python 3

>>> 1/2
0.5
>>> 1//2
0
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?