Cách sửa lỗi could not convert string to float python

Thứ hai, tệp và các đối tượng khác như tệp yêu cầu bạn chạy một bộ hướng dẫn để xử lý chúng đúng cách. Ví dụ: thật dễ dàng để bạn mở một tệp giống như bạn đã làm và quên đóng nó sau đó, cũng giống như bạn đã làm. Trong trường hợp này, chúng tôi có một cơ chế xử lý đặc biệt được gọi là trình quản lý bối cảnh và chúng được sử dụng với từ khóa with trong python, những cơ chế này giúp bạn chạy các lệnh mà bạn thường quên và có thể khiến chương trình của bạn bị hỏng.

Vì vậy, đây là cách tôi đã thực hiện những gì bạn muốn làm

result = 0

file = open("n38.txt","r")
with file: # a context manager
    data = file.read() #this returns data as a string of numbers
    for num_char in data:
        result += float (num_char)

#file is automatically closed after
print ("the sum is: ",result)

Tôi chưa thử nghiệm điều này, nhưng tôi chắc chắn rằng nó có thể hoạt động. Vì vậy, hãy thử điều đó, hoặc có thể lấy nó làm ví dụ

Nói chung, như bạn đã biết, không nên sử dụng các trình soạn thảo văn bản có định dạng (như Google Docs, MS Word và LibreOffice Writer) để tạo các tệp văn bản thuần túy. Thông thường, họ sẽ đi loanh quanh và làm những điều bạn không muốn. Thay vào đó, bạn nên sử dụng trình soạn thảo văn bản, tốt nhất là trình soạn thảo văn bản thực sự, như Notepad++, Sublime Text hoặc VSCode, không có nhiều hạn chế và sự cố mà Notepad tích hợp sẵn có.

Cần lưu ý, giải pháp của bạn chuyển đổi số thành int, không phải float, như báo cáo vấn đề ban đầu của bạn đã chỉ định. Hơn nữa, vui lòng đọc kỹ những gì người khác đã viết về các vấn đề tiềm ẩn khác với việc triển khai này, bao gồm cả việc không sử dụng trình quản lý ngữ cảnh (câu lệnh ______17_______) để đảm bảo tệp thực sự được đóng, đảm bảo chỉ định mã hóa tệp và các vấn đề khác. Bạn cũng có thể ngắn gọn hơn nhiều và thay thế bằng, chẳng hạn

with open("n38bn.txt", r, encoding="utf-8") as file:  # Open the file for the length of the width block
    numbers = [float(line.strip()) for line in file]  # For each line, strip, convert to float and add to list
result = sum(numbers)  # Sum the list
print("The sum is", result)

Điều này sử dụng a để tạo danh sách trong một dòng và tránh các sự cố đã xác định khác với giải pháp trước đó (để tệp mở, không chỉ định mã hóa, không chuyển đổi thành float, v.v.)

Giá trịError. không thể chuyển đổi chuỗi thành lỗi float xảy ra khi bạn cố gắng chuyển đổi một chuỗi không chứa số float thành float. Nếu chuỗi python không được định dạng dưới dạng số dấu phẩy động, thì bạn không thể chuyển đổi chuỗi thành số thực. Giá trị trăn. không thể chuyển đổi chuỗi thành float sẽ bị ném. Lỗi xảy ra do lỗi phân tích cú pháp trong hàm float() với đối số chuỗi không thể phân tích cú pháp dưới dạng số float

Hàm float() được sử dụng để chuyển đổi một chuỗi có giá trị float thành giá trị float. Hàm float phân tích chuỗi và chuyển đổi nó thành số float. Nếu xảy ra lỗi trong khi chuyển đổi chuỗi thành số float, trình thông dịch python sẽ đưa ra lỗi giá trị này

Chuỗi được cho là có số float hợp lệ. Nếu chuỗi trống hoặc không chứa số float hợp lệ, trình thông dịch python không thể chuyển đổi nó thành số float trong khi phân tích cú pháp chuỗi. Trong trường hợp này, lỗi “ValueError. không thể chuyển đổi chuỗi thành float. ” được ném bởi trình thông dịch python



Ngoại lệ

Lỗi “ValueError. không thể chuyển đổi chuỗi thành float. ” sẽ được hiển thị như bên dưới dấu vết ngăn xếp

Traceback (most recent call last):
  File "/Users/python/Desktop/test.py", line 1, in 
    print float('')
ValueError: could not convert string to float: 
[Finished in 0.0s with exit code 1]


Nguyên nhân gốc rễ

Hàm float() được dùng để chuyển đổi một chuỗi thành một số float. Chuỗi được cho là có số float hợp lệ. Nếu chuỗi hoặc trống hoặc không có số phao hợp lệ, trình thông dịch python sẽ ném một lỗi trong khi phân tích cú pháp chuỗi. Nếu giá trị float hợp lệ được chuyển đến chuỗi, vấn đề này sẽ được giải quyết



Đối số hợp lệ trong hàm float()

Sau đây là các đối số hợp lệ cho hàm float(). Nếu bạn sử dụng một trong các cách sau, lỗi sẽ không xảy ra

hàm float() không có đối số – Hàm float() mặc định không có đối số nào được truyền sẽ trả về giá trị mặc định 0. 0

print float()    # returns 0.0

hàm float() có giá trị số nguyên – Nếu một giá trị số nguyên được truyền dưới dạng đối số trong hàm float(), thì trả về giá trị float

print float(5)   # returns 5.0

Hàm float() có chuỗi chứa giá trị số nguyên – Nếu một chuỗi có giá trị số nguyên được truyền dưới dạng đối số trong hàm float(), trả về giá trị float

print float('5')   # returns 5.0

hàm float() có giá trị float – Nếu giá trị float được truyền dưới dạng đối số trong hàm float(), trả về giá trị float

print int(5.4)   # returns 5.4

Các hàm float() với một chuỗi chứa giá trị float – Nếu một chuỗi có giá trị float được truyền dưới dạng đối số trong hàm float(), trả về giá trị float

print float('5.4')   # returns 5.4

hàm float() với giá trị boolean – Nếu giá trị boolean được truyền dưới dạng đối số trong hàm float(), trả về giá trị float cho giá trị boolean

________số 8_______

Đối số không hợp lệ trong hàm float()

hàm float() có chuỗi rỗng – Không thể phân tích cú pháp chuỗi rỗng thành giá trị float

print float('')     # throws ValueError: could not convert string to float:

hàm float() với chuỗi không float – Nếu một chuỗi chứa giá trị không float chẳng hạn như ký tự và được truyền dưới dạng đối số, hàm float() sẽ đưa ra lỗi giá trị

print float('q')     # throws ValueError: could not convert string to float: q


Giải pháp 1

Giá trị chuỗi phải được kiểm tra xem đó có phải là số hay không bằng cách sử dụng hàm isnumic() tích hợp. Nếu một chuỗi chứa một số, nó sẽ được truyền dưới dạng đối số trong hàm float(). Nếu không, người dùng sẽ được hiển thị thông báo lỗi

Chương trình

x='a'
print float(x)

đầu ra

print float()    # returns 0.0
0

Giải pháp

print float()    # returns 0.0
1

đầu ra

print float()    # returns 0.0
2

Giải pháp 2

Nếu một chuỗi đôi khi chứa một số không phải là số, thì hàm tích hợp không phải là một lựa chọn tốt. Trong trường hợp này, hãy thử phương pháp bắt sẽ giải quyết vấn đề này. Nếu chuỗi chứa số float, nó sẽ được thực thi trong khối try. Nếu không, một thông báo lỗi sẽ được hiển thị cho người dùng trong khối lỗi

Làm cách nào để chuyển đổi chuỗi thành Python nổi?

Trong Python, chúng ta có thể sử dụng float() để chuyển String thành float. và chúng ta có thể sử dụng int() để chuyển Chuỗi thành số nguyên.

Làm cách nào để chuyển đổi chuỗi thành gấu trúc Python nổi?

pandas Chuyển chuỗi thành dấu nổi . Use pandas DataFrame. hàm astype() để chuyển đổi cột từ chuỗi/int thành float, bạn có thể áp dụng điều này trên một cột cụ thể hoặc trên toàn bộ Khung dữ liệu. Để truyền kiểu dữ liệu thành float có chữ ký 54 bit, bạn có thể sử dụng numpy. float64 , gọn gàng.

Làm cách nào để chuyển đổi chuỗi thành float trong học máy?

hàm float() là cách phổ biến nhất để chuyển đổi chuỗi thành giá trị float. Hàm float nhận tham số y, là một chuỗi, sau đó sẽ chuyển đổi chuỗi thành giá trị float và trả về giá trị float của nó.

Hàm nào chuyển đổi một chuỗi thành một float?

Hàm atof() chuyển đổi chuỗi ký tự thành giá trị dấu phẩy động có độ chính xác kép. Chuỗi đầu vào là một chuỗi các ký tự có thể được hiểu là một giá trị số của kiểu trả về được chỉ định.