lỗi đánh máy. không thể nhân chuỗi với lỗi 'float' không thuộc kiểu int xảy ra khi nhân bất kỳ chuỗi hoặc mảng nào với bất kỳ giá trị float nào. Thấy. Quy tắc vàng và đơn giản nhất là phép nhân có thể thực hiện được với các giá trị số. Chúng tôi có thể giữ cả toán hạng Số thập phân [ Float ] hoặc số nguyên [ Số nguyên ]. Nhưng nếu một toán hạng là một dãy như chuỗi hoặc mảng thì bắt buộc toán hạng thứ hai chỉ phải là Số nguyên. Trong bài viết này, Chúng tôi sẽ tìm hiểu nguyên nhân gốc rễ và tương ứng cách dễ nhất để khắc phục điều này
lỗi đánh máy. không thể nhân chuỗi với loại không int 'float' [ Nguyên nhân gốc rễ ] –
Cách tốt nhất để hiểu nguyên nhân gốc rễ của lỗi này là sao chép. Chúng tôi sẽ thực hiện một tình huống thực tế trong đó Trình thông dịch đưa ra lỗi tương tự
my_list=[1,2,3]
coff=4.2
multiply=my_list*coff
print[multiply]
Ở đây chúng tôi đã lấy một danh sách [my_list ] là một chuỗi python. Khi chúng tôi cố gắng nhân giống nhau với giá trị không phải số nguyên float [coff], chúng tôi nhận được điều này không thể nhân chuỗi theo kiểu không int 'float'
Toán tử * được sử dụng để nhân khi nó hoạt động ở hai giá trị số nguyên hoặc dấu phẩy động. Nhưng khi toán tử * được sử dụng trên một giá trị chuỗi và một giá trị số nguyên, nó sẽ trở thành toán tử sao chép chuỗiBạn có thể nhân một giá trị nguyên và một giá trị float bằng cách chuyển đổi số nguyên thành float. Nhưng nếu bạn đang cố nhân một số float và một giá trị không phải là số nguyên hoặc chuỗi, thì bạn sẽ gặp lỗi. Một lỗi gọi là "Lỗi loại không thể nhân chuỗi theo kiểu không int của loại 'float'" sẽ xuất hiện
Cách dễ nhất để giải quyết vấn đề này là chuyển đổi chuỗi thành số float hoặc số nguyên rồi nhân nó
Đoạn mã sau sẽ ném lỗi
# Declare variables
val1 = '10'
val2 = 1.2
# Multiply variables
result = [val1*val2]
# Print Output
print['Multiply of val1 and val2: ',result];
đầu ra
Traceback [most recent call last]:
File "multiply.py", line 3, in
result = [val1*val2]
TypeError: can't multiply sequence by non-int of type 'float'
Trong ví dụ trên, chúng ta đã khai báo một biến số nguyên là một chuỗi
val1 = '10' # Declare variables as string
Do đó trong khi thực hiện phép nhân giữa chuỗi và biến float, nó đã gây ra lỗi
Để giải quyết lỗi này, bạn cần thay đổi mã mà bạn đang nhân "val1" với "val2" Đây là cách khắc phục
Nhân số float trong Python thật dễ dàng. Bạn chỉ cần nhân chúng giống như cách bạn làm với số nguyên. Kết quả sẽ là một float. Nó hoạt động hoàn toàn trực quan. Ví dụ: trong đoạn mã sau, chúng tôi nhân các biến float 'a' và 'b', kết quả là 'c' cũng là một float
a = 12.4
b = 5.24
c = a * b
print[c]
Nếu bạn thích, bạn cũng có thể in ra loại cho từng biến liên quan. Điều này xác nhận rằng tất cả chúng đều là số float và nó hoạt động chính xác như bạn mong đợi
a = 12.4
b = 5.24
c = a * b
print[type[a],type[b],type[c]]
print[c]
Sử dụng toán tử nhân để nhân một số nguyên và một số float trong Python, e. g. my_int * my_float
. Kết quả phép nhân sẽ luôn là kiểu float
Ví dụ đầu tiên sử dụng hàm input[]
để lấy một số nguyên từ người dùng
Hàm nhận một đối số tùy chọn prompt
và ghi nó vào đầu ra tiêu chuẩn mà không có một dòng mới ở cuối
Sau đó, hàm đọc dòng từ đầu vào, chuyển đổi nó thành chuỗi và trả về kết quả
Lưu ý rằng hàm input[]
luôn trả về một chuỗi, ngay cả khi người dùng nhập một số
Bạn có thể truyền chuỗi vào lớp int[]
để chuyển nó thành số nguyên
Kết quả của phép nhân một số float và một số nguyên sẽ luôn là một số float
Bạn có thể sử dụng hàm round[]
nếu bạn cần làm tròn kết quả đến độ chính xác N chữ số sau dấu thập phân
Một tính năng tuyệt vời có trong python là chúng ta có thể nhân các chuỗi với các số. Với python, chúng ta có thể nhân một từ, một chuỗi hoặc một bộ đã cho với một giá trị số. Làm như vậy sẽ chỉ nhân các lần xuất hiện của chuỗi đó. Chuỗi sẽ được lặp lại với số tiền bằng giá trị số. Giá trị số có thể là một giá trị số nguyên nhưng không phải là giá trị dấu phẩy động. Làm như vậy sẽ tăng TypeError. Trong bài viết này, chúng ta sẽ xem xét TypeError sau đây. python không thể nhân chuỗi theo kiểu không int 'float'
nội dung
Nhân chuỗi với số nguyên
Khác với các ngôn ngữ lập trình khác, python có tính năng nhân chuỗi với số. Làm như vậy sẽ tạo ra nhiều lần xuất hiện của chuỗi đó. Hãy để chúng tôi hiểu với sự giúp đỡ của một ví dụ. Chúng ta sẽ lấy một chuỗi có tên là 'temp', lưu trữ giá trị 'Python'. Chúng tôi cũng lấy một biến khác, 'n', lưu trữ giá trị số nguyên 2. Bây giờ, chúng ta sẽ thấy nhiều biến 'n' với 'temp'
temp = 'Python' n = 2 print[temp*n]
đầu ra là
PythonPython
Chúng ta cũng có thể tạo nhiều chuỗi như danh sách và bộ cũng như nhân chúng với một giá trị số nguyên. Nội dung của chuỗi sẽ được nhân đôi và độ dài của danh sách sẽ tăng lên tùy thuộc vào giá trị của số nguyên.
________số 8_______
Đầu ra sẽ là
['Python', 'Django', 'Flask', 'Python', 'Django', 'Flask']
Tương tự, nếu giá trị của n là 4, nó sẽ nhân chuỗi bốn lần
my_list = ['Python', 'Django', 'Flask'] n = 4 print[my_list*n]
đầu ra
['Python', 'Django', 'Flask', 'Python', 'Django', 'Flask', 'Python', 'Django', 'Flask', 'Python', 'Django', 'Flask']
Nhân chuỗi với float
Nếu chúng ta cố gắng nhân một chuỗi đã cho với một giá trị float, nó sẽ gây ra lỗi vì những lý do rõ ràng. Bạn không thể nhân một chuỗi với giá trị không phải là số nguyên. Vì vậy, python sẽ đưa ra TypeError nói rằng Python không thể nhân chuỗi theo kiểu không int 'float'
temp = 'Python' n = 4.0 print[temp*n]
Đầu ra sẽ là lỗi loại bên dưới được đưa ra
TypeError: can't multiply sequence by non-int of type 'float'
Nó sẽ gây ra lỗi tương tự ngay cả khi chúng ta cố gắng nhân danh sách với giá trị không phải là số nguyên
my_list = ['Python', 'Django', 'Flask'] n = 4.0 print[my_list*n]
đầu ra
TypeError: can't multiply sequence by non-int of type 'float'
Mặc dù, trong trường hợp này, số cuối cùng bằng giá trị số nguyên 4, nhưng python coi nó là số dấu phẩy động và do đó đưa ra lỗi
TypeError là gì?
TypeError trong python là một loại lỗi do chương trình đưa ra khi chúng ta cố gắng thực hiện một thao tác trên một đối tượng thuộc loại không phù hợp. TypeError chỉ ra rằng thao tác chúng tôi đang cố gắng thực hiện không thể thực hiện được trong python. Ngoại lệ được đưa ra trong các tình huống khác nhau, chẳng hạn như thêm chuỗi vào số nguyên, nhân chuỗi với giá trị float, sử dụng chuỗi để lập chỉ mục danh sách, v.v.
Ngoài ra, hãy đọc. 2 Nguyên nhân gây ra TypeError. Đối tượng 'Tuple' không thể gọi được trong Python
Cách xử lý python không thể nhân dãy không int kiểu 'float'
1. Chuyển đổi số float thành số nguyên
Phép nhân giữa float và string không được hỗ trợ trong python. Tuy nhiên, để tránh bị ném lỗi, chúng ta có thể thử chuyển đổi giá trị số nguyên đã cho thành giá trị chuỗi. Chúng ta có thể chuyển đổi rõ ràng số 'n' thành giá trị số nguyên trước khi nhân nó với giá trị chuỗi. Chúng tôi đạt được điều đó bằng cách sử dụng hàm int[]
Nó được thực hiện theo cách sau
PythonPython0
Làm như vậy sẽ coi số là một giá trị số nguyên và do đó loại bỏ lỗi
PythonPython1
Khi được áp dụng trên một chuỗi danh sách, lỗi cũng sẽ được giải quyết trong trường hợp đó
PythonPython2
đầu ra
['Python', 'Django', 'Flask', 'Python', 'Django', 'Flask', 'Python', 'Django', 'Flask', 'Python', 'Django', 'Flask']
Ngoài ra, hãy đọc. Cách chuyển đổi int thành float trong Python một cách ngầm định và rõ ràng
2. Chuyển đổi chuỗi số thành float
Nếu chuỗi chứa một giá trị số, chúng ta cũng có thể chuyển đổi chuỗi thành dấu phẩy động bằng hàm float[]. Lưu ý rằng điều này sẽ được áp dụng nếu chuỗi chỉ chứa số
PythonPython4
Làm như vậy sẽ nhân giá trị của số bên trong chuỗi với giá trị 'n' chứ không phải số lần xuất hiện của nó
PythonPython5
Lỗi này cũng có thể xảy ra trong trường hợp chúng tôi đang cố gắng chấp nhận đầu vào số từ người dùng, nhưng chúng tôi không thể chuyển đổi nó thành giá trị số nguyên hoặc giá trị float
xu hướng
[Đã sửa] Mô-đun Seaborn không có Lỗi Histplot thuộc tính
3. Chuyển đổi đầu ra của hàm input[] thành số nguyên
Hãy để chúng tôi thực hiện một chương trình trong đó chúng tôi tính toán lợi nhuận khi bán một lượng bánh quy nhất định. Số lượng bánh quy đã bán được lấy làm đầu vào từ người dùng. Lợi nhuận cho mỗi chiếc bánh quy được lưu trữ bên trong một biến có tên là 'lợi nhuận'. Nó lưu trữ giá trị float là 75. 5. Số lượng bánh quy được lấy làm đầu vào với sự trợ giúp của hàm ‘input[]’ và được lưu vào một biến có tên ‘sold_count’. Bây giờ, khi chúng ta nhân 'sold_count' với 'profit', nó sẽ phát sinh lỗi vì input[] lấy dữ liệu đầu vào từ người dùng và lưu trữ ở dạng số nguyên. Do đó, phép nhân của float với chuỗi sẽ gây ra lỗi
PythonPython6
đầu ra
TypeError: can't multiply sequence by non-int of type 'float'
Để giải quyết lỗi, chúng tôi sẽ phải chuyển đổi 'sold_count' thành một giá trị số nguyên trước khi nhân nó với giá trị float 'profit'. Chúng ta sẽ làm điều đó bằng cách sử dụng hàm int[]
PythonPython8
đầu ra là
PythonPython9
Phổ biến bây giờ
Thonny. Gói văn bản dễ dàng
Điều đó tổng hợp mọi thứ về Python Không thể nhân chuỗi theo kiểu không int 'float'. Nếu bạn có bất kỳ nghi ngờ nào, hãy đặt câu hỏi của bạn trong phần bình luận bên dưới