Hướng dẫn can you multiply floats in python - bạn có thể nhân nổi trong python không

Nhân phao trong Python rất dễ dàng. Bạn chỉ cần nhân chúng giống như cách bạn sẽ số nguyên. Kết quả sẽ là một chiếc phao. Nó hoạt động hoàn toàn bằng trực giác. Ví dụ, trong đoạn mã sau, chúng tôi nhân lên các biến float ‘A và và’ B, dẫn đến ‘C, cũng là một chiếc phao.

a = 12.4
b = 5.24
c = a * b
print(c)

Nếu bạn thích bạn cũng có thể in loại cho mỗi biến liên quan. Điều này xác nhận rằng tất cả chúng đều là phao 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)

Theo Python 2, đầu vào hàm thực hiện một eval trên chuỗi đầu vào:

Python 2.7.7 (default, Jun 14 2014, 23:12:13) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x=input('Enter x: ')
Enter x: 2
>>> x
2
>>> type(x)

>>> x*5
10

Và một chiếc phao:

>>> x=input('Enter x: ')
Enter x: 2.2
>>> type(x)

>>> x*5
11.0

Vì nó được coi là không khôn ngoan để lấy mã tùy ý từ người dùng trong một ứng dụng, hành vi này đã được thay đổi theo Python 3.

Theo Python 3, đầu vào luôn trả về một chuỗi:

Python 3.4.1 (default, May 19 2014, 13:10:29) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x=input('Enter x: ')
Enter x: 2.
>>> type(x)

Giải thích kết quả của bạn:

>>> x*5
'2.2.2.2.2.'

Nếu bạn muốn có chức năng tương tự một cách an toàn trong Python 3, bạn có thể kết thúc

a = 12.4
b = 5.24
c = a * b
print(type(a),type(b),type(c))
print(c)
3 trong một cuộc gọi đến AST.Literal_Eval:

>>> from ast import literal_eval
>>> x=literal_eval(input('Enter x: '))
Enter x: 2.2
>>> x
2.2
>>> type(x)

Hoặc, chỉ cần chuyển đổi đầu vào của người dùng thành kiểu dữ liệu mong muốn với

a = 12.4
b = 5.24
c = a * b
print(type(a),type(b),type(c))
print(c)
4 hoặc
a = 12.4
b = 5.24
c = a * b
print(type(a),type(b),type(c))
print(c)
5

Mặc dù các chuỗi có thể được nhân với các số nguyên để tạo ra một chuỗi lặp lại, các chuỗi không thể được nhân với phao. Nếu không, Python trả về một lỗi.

Trong bài viết này, chúng tôi sẽ nói về kiểu loại của nhóm: có thể nhân lên chuỗi với lỗi không phải là loại lỗi ’float và lý do tại sao nó được nêu ra. Chúng tôi sẽ đi qua một kịch bản ví dụ với lỗi này để chúng tôi có thể giải quyết nó.

Hướng dẫn can you multiply floats in python - bạn có thể nhân nổi trong python không

Tìm Bootcamp của bạn phù hợp

  • Karma nghề nghiệp phù hợp với bạn với bootcamp công nghệ hàng đầu
  • Truy cập các học bổng và khóa học chuẩn bị độc quyền

Chọn mối quan tâm của bạn họ Tên điện thoại Email Tên của bạn
First name

Last name

Email

Phone number

Bằng cách tiếp tục, bạn đồng ý với các điều khoản dịch vụ và chính sách quyền riêng tư của chúng tôi và bạn đồng ý nhận được các ưu đãi và cơ hội từ Karma nghề nghiệp qua điện thoại, tin nhắn văn bản và email.

TypeError: Có thể nhân chuỗi nhân với loại không phải là ’float

Hãy cùng xem thông báo lỗi của chúng tôi và xem những gì nó cho chúng tôi biết:

typeerror: can't multiply sequence by non-int of type 'float'

Lỗi của chúng tôi là một kiểu mẫu. Điều này có nghĩa là chúng tôi đang cố gắng thực hiện một hoạt động trên một giá trị mà kiểu dữ liệu không hỗ trợ hoạt động đó. Chẳng hạn, nếu bạn cố gắng kết hợp một số nguyên và chuỗi, một loại lỗi sẽ được nêu ra.

Lỗi là cho chúng tôi biết rằng chúng tôi đang nhân một chuỗi, còn được gọi là một chuỗi, bằng một số điểm nổi. Điều này không được hỗ trợ trong Python.

Có hai loại số trong Python: số nguyên và số điểm nổi. Số nguyên là các số toàn bộ trong khi số điểm nổi là số thập phân.

Chuỗi có thể được nhân với số nguyên. Xem xét ví dụ này:

scone = "Scone"
print(scone * 3)

Mã của chúng tôi trả về: Sconesconescone. Khi bạn nhân một chuỗi với một số nguyên, nó sẽ tạo ra một chuỗi lặp lại của chuỗi đó.

Chuỗi không thể được nhân với số điểm nổi. Nếu bạn đã cố gắng nhân chuỗi Scone của chúng tôi với 3,3, Python sẽ làm gì? Bạn có thể có .3 của một chuỗi. Do đó, một lỗi được trả về.

Một kịch bản ví dụ

Lỗi này thường được tìm thấy khi làm việc với các câu lệnh input (). Hãy cùng xem một chương trình tính toán giảm giá 5% khi mua hàng tại một cửa hàng.

value = input("How much has the customer spent? ")
discount = 0.05

final_cost = value - (value * discount)
print(round(final_cost, 2))

Chúng tôi đã tuyên bố một biến có tên là Giá trị lưu trữ khách hàng đã chi bao nhiêu cho việc mua hàng. Giá trị này được thu thập từ người dùng bằng phương thức input ().

Tiếp theo, chúng tôi đã tuyên bố một biến có tên là Giảm giá. Điều này lưu trữ giảm giá 5% mà chúng tôi sẽ áp dụng cho các giao dịch mua dưới dạng số thập phân. Sau đó, chúng tôi tính toán mức chiết khấu tỷ lệ phần trăm bằng cách nhân giá trị giá trị và giá trị giảm giá với nhau. Sau đó chúng tôi trừ con số này từ tổng chi phí của sản phẩm.

Chúng tôi sử dụng phương thức vòng () để làm tròn giá trị của Final Final_cost, đến hai vị trí thập phân. Sau đó, chúng tôi in giá trị này vào bảng điều khiển.

Hãy để cố gắng chạy mã của chúng tôi:

a = 12.4
b = 5.24
c = a * b
print(type(a),type(b),type(c))
print(c)
0

Ôi không. Một lỗi đã được trả lại. Hãy để sửa lỗi lỗi này.

Giải pháp

Lỗi Kiểu Kiểu hàng: Có thể nhân chuỗi nhân với loại không phải là loại ’float, được gây ra bằng cách nhân một chuỗi và số điểm nổi với nhau.

Lỗi này xảy ra trong chương trình trước đó của chúng tôi vì input () trả về một chuỗi. Điều này có nghĩa là ngay cả khi chúng tôi chèn một số vào chương trình của chúng tôi, nó sẽ được lưu trữ dưới dạng chuỗi.

Để giải quyết vấn đề này, chúng tôi có thể chuyển đổi giá trị mà người dùng chèn vào chương trình thành số điểm nổi. Chúng ta có thể làm điều này bằng phương thức float ():

a = 12.4
b = 5.24
c = a * b
print(type(a),type(b),type(c))
print(c)
1

Phương thức float () được bao quanh bởi phương thức đầu vào (). Phương thức float () chuyển đổi giá trị chuỗi được trả về bởi input () thành số điểm nổi. Điều này cho phép chúng tôi nhân lên giá trị giá trị và giá trị giảm giá vì cả hai đều là số.

Hãy để cố gắng chạy lại mã của chúng tôi:

a = 12.4
b = 5.24
c = a * b
print(type(a),type(b),type(c))
print(c)
2

Mã của chúng tôi hoạt động! Chương trình của chúng tôi cho chúng tôi biết rằng giảm giá 5% cho giá trị mua 12,99 đô la làm cho chi phí của sản phẩm cuối cùng $ 12,34.

Sự kết luận

Chuỗi không thể được nhân với số điểm nổi. Điều này là do nhân các chuỗi với các số nguyên tạo ra một chuỗi lặp đi lặp lại của chuỗi. Điều này là không thể sử dụng một điểm nổi vì nó sẽ dẫn đến việc nhân một chuỗi với các giá trị thập phân.

Để giải quyết loại của Kiểu của người Viking: Có thể nhân chuỗi theo lỗi không phải là loại ’float’ float, đảm bảo rằng tất cả các giá trị chuỗi được chuyển đổi thành số điểm nổi nếu chúng được sử dụng như một phần của tính toán.

Bây giờ bạn đã sẵn sàng để giải quyết lỗi này như một chuyên gia Python!

Phao có thể được nhân lên không?

Trước hết, bạn có thể nhân phao.Vấn đề bạn gặp phải không phải là chính bản chính, mà là số ban đầu bạn đã sử dụng.Sự nhân có thể mất một số độ chính xác, nhưng ở đây, số ban đầu mà bạn đã nhân bắt đầu với sự chính xác bị mất.Đây thực sự là một hành vi mong đợi.you can multiply floats. The problem you have is not the multiplication itself, but the original number you've used. Multiplication can lose some precision, but here the original number you've multiplied started with lost precision. This is actually an expected behavior.

Bạn có thể nhân danh sách với một chiếc phao trong Python không?

Nhân một chuỗi danh sách với một số float.Tương tự như chuỗi và bộ dữ liệu, danh sách cũng được coi là một đối tượng trình tự trong Python.Do đó, cố gắng nhân danh sách với một chiếc phao cũng sẽ ném một lỗi loại.trying to multiply a list by a float will also throw a type error.

Bạn có thể thêm 2 chiếc phao trong Python không?

Làm thế nào để bạn thêm hai chiếc phao trong Python?Tạo một biến float_number_1 giữ số nổi đầu tiên, tạo một biến float_number_2 giữ số nổi thứ hai, giờ đây tạo ra một biến sum_of_two_float_numbers giữ tổng của hai số.