Code bị lỗi "could not convert string to float: ‘pi’"

import math
x=float(input('nhap gia tri cua x'))
bieu_thuc = math.sin(x)**2 + math.cos(x)**2
print(x,'thoan mai yeu cau bai toan') if bieu_thuc==1 else print(x,'khong thoai man yeu cau bai toan')

khi em chạy interactive nhập pi vào thì bị could not convert string to float: ‘pi’
đây là đề bài Viết code kiểm tra biểu thức sau đúng không (true or false). Kiểm tra với x = 𝜋,𝜋/2, 4𝜋/3.sin^2 (𝑥)+cos^2 (𝑥)= 1

vào đâu? dòng nào? biến nào?

3 Likes

chạy chương trình mới nhập giá trị x ,nhưng nhập pi hay math.pi nó đều hiện lỗi could not convert string to float: ‘pi’

em nhập 1 số trước nhưng nó hiểu đây là string chứ ko phải float ạ

Số em nhập vào dùng dấu thập phân là dấu phẩy (3,14), hay dấu chấm (3.14) vậy :thinking: ?

1 Like

bạn gõ bàn phím với nội dung là pimath.pi để nhập cho biến x kiểu float, bạn thấy hợp lý không
bạn đã học được cách dùng math.pi kiểu này ở đâu?

3 Likes

nó ko ra giá trị của pi ạ chỉ là gần đúng thôi ạ

dạ em thấy nó ko hợp lí nhưng cũng ko biết khác phúc sao ạ
nhập 3.14 thì chỉ ra giá trị gần đúng ạ

bạn muốn sử dụng hằng số pi trong thư biện math thì search là ra

đâu có ai tự nhiên biết, không biết thì search chứ sao lại đoán mò nhập vào cái chuỗi math.pi mà parse được thành số pi

search có khó lắm không?



ngay từ link đầu tiên

2 Likes

mình ko hỏi print
bạn thử chạy code sẽ hiểu ý mình muốn hỏi hơn

Bạn chưa hiểu?
Những thứ từ chuỗi muốn chuyển thành số thì chỉ có số thôi. Chả có cái nào ở float nó chuyển chuỗi math.pi nào thành số 3.14... cả.
Cách bạn làm giống với:

x = float("math.pi"); # tào lao.
# float chỉ chấp nhận số, SỐ và SỐ. Đúng định dạng của số.

Còn bạn muốn nhập các giá trị 𝜋,𝜋/2, 4𝜋/3 thì hãy xét chuỗi trước khi dùng float. Nếu chuỗi đó bằng pi, pi/2, thì gán x theo math.pi, math.pi/2.

Nhắc lại: Người chưa hiểu là bạn đấy. Ở đây ai cũng hiểu bạn đang cố muốn làm gì. Mọi người đang giải thích mà bạn lại chả hiểu gì hết.

2 Likes

dạ em cảm ơn các anh/chị nhiều ạ

  1. Vấn đề : Hàm input() chỉ nhận giá trị nhập từ bàn phím vào dưới dạng string, do vậy khi em nhập “pi” hay “math.pi” thì chương trình cũng chỉ coi đây là các dòng string chứ không nhận giá trị của số pi.
    Nguồn: Hàm input() và cách nhập dữ liệu vào python

    Và vì thế chúng ta không thể nhập trực tiếp giá trị của pi vào chương trình mà phải gọi nó trong chương trình.

  2. Giải quyết : Trong python chúng ta dùng số pi bằng hàm math.pi trong module math. Với yêu cầu bài toán, thay vì nhập trực tiếp pi thì chúng ta sẽ nhập bội số của pi để tính toán.
    Tham khảo: Số pi trong python

Dưới đây là ví dụ:

import math
n=float(input('Nhap bội số của pi:'))
x = n*math.pi
bieu_thuc_s="sin^2 ({}xπ)+cos^2 ({}xπ)= 1".format(n,n)
print("Biểu thức cần kiểm tra:",bieu_thuc_s)

bieu_thuc = math.sin(x)**2 + math.cos(x)**2
print(x,'thoan mai yeu cau bai toan') if bieu_thuc==1 else print(x,'khong thoai man yeu cau bai toan')

Kết quả:

Nhap bội số của pi:2
Biểu thức cần kiểm tra: sin^2 (2.0xπ)+cos^2 (2.0xπ)= 1
6.283185307179586 thoan mai yeu cau bai toan

Tham khảo: Định dạng chuỗi trong python bằng phương thức format

2 Likes

dạ em cảm ơn anh/chị nhiều ạ

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