Hướng dẫn how do you divide a value in python? - làm thế nào để bạn chia một giá trị trong python?

Tôi đã tạo một tập lệnh phân tích cú pháp XLRD đến JSON, không phân chia các biến. Nó luôn trả về 0 ... mã mà tôi đang sử dụng để chia các biến là:

if not row_values[2]:
   key['nr_one'] = 0
else:
   key['nr_one'] = int(row_values[2])
if not row_values[4]:
   key['nr_two'] = 0
else:     
   key['nr_two'] = int(row_values[4])
try:   
    key['perc'] = float(key['nr_two']/key['nr_one']*100)
except ZeroDivisionError:
    key['perc'] = 0

Tôi đã in mã sau ở cuối tập lệnh:

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])

Điều này trả về:

one
103386547
two
135680054
perc
0.0

Vì thế. Tôi không hiểu tại sao bộ phận thất bại và trả lại 0? Ai đó có thể vui lòng giúp tôi định dạng một cách tốt để tính toán tỷ lệ phần trăm

Hướng dẫn how do you divide a value in python? - làm thế nào để bạn chia một giá trị trong python?

Ma0

14.8K3 Huy hiệu vàng33 Huy hiệu bạc64 Huy hiệu đồng3 gold badges33 silver badges64 bronze badges

Hỏi ngày 9 tháng 12 năm 2016 lúc 14:14Dec 9, 2016 at 14:14

Anna Jeanineanna JeanineAnna Jeanine

3,80210 Huy hiệu vàng38 Huy hiệu bạc71 Huy hiệu đồng10 gold badges38 silver badges71 bronze badges

nó phải là float(key['nr_two']) /key['nr_one']*100

Đã trả lời ngày 9 tháng 12 năm 2016 lúc 14:18Dec 9, 2016 at 14:18

1

Phân chia số nguyên là như thế này:

1/3 #=> 0

Cách dễ nhất để hiểu kết quả này không phải là một phần, mà là câu trả lời cho câu hỏi "How many times do 3 fit in 1?".

Vì vậy, 0 nhân với 100 vẫn là:

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
0

Bạn cần

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
1

Đối với mã của bạn:

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
2 (mà không sử dụng
print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
3)

Nó trở lại :

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
4

Lưu ý: Bạn thực sự cần gõ

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
5 (một chiếc phao), không chỉ
print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
6 (một int). Bạn sẽ nhận được
print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
7 nếu không.

Đã trả lời ngày 9 tháng 12 năm 2016 lúc 14:17Dec 9, 2016 at 14:17

Hướng dẫn how do you divide a value in python? - làm thế nào để bạn chia một giá trị trong python?

Eric Duminileric DuminilEric Duminil

51.6K8 Huy hiệu vàng66 Huy hiệu bạc120 Huy hiệu đồng8 gold badges66 silver badges120 bronze badges

2

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
8 là số nguyên và
print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])
9 cũng vậy. Vì vậy, khi chúng được chia, kết quả bị buộc phải là một số nguyên trong các phiên bản Python 2x (trong Python 3x Giới hạn này không tồn tại và mã của bạn sẽ chạy tốt). Do đó, những gì bạn nhận được, là 0, sau đó được nhân với 100, vì vậy vẫn là 0 nhưng nổi, 0,0.in Python 2x versions (in Python 3x this limitation does not exist and your code would run just fine). What you therefore get, is 0, which is later multiplied by 100, so still 0 but float, 0.0.

Đã trả lời ngày 9 tháng 12 năm 2016 lúc 14:20Dec 9, 2016 at 14:20

Hướng dẫn how do you divide a value in python? - làm thế nào để bạn chia một giá trị trong python?

IuliaiuliaIulia

715 huy hiệu đồng5 bronze badges

Để đạt được bộ phận

one
103386547
two
135680054
perc
0.0
0 trong Python 2.x, bạn chỉ có thể thêm:

from __future__ import division

Bằng cách này, bạn sẽ không cần chuyển đổi số của mình mỗi khi bạn chia chúng.

Đã trả lời ngày 9 tháng 12 năm 2016 lúc 14:21Dec 9, 2016 at 14:21

Hướng dẫn how do you divide a value in python? - làm thế nào để bạn chia một giá trị trong python?

Zipazipazipa

26.7K6 Huy hiệu vàng42 Huy hiệu bạc57 Huy hiệu Đồng6 gold badges42 silver badges57 bronze badges

Các toán tử phân chia cho phép bạn chia hai số và trả về thương số, tức là, số hoặc số thứ nhất ở bên trái được chia cho số hoặc số thứ hai ở bên phải và trả về thương số. & NBSP;allow you to divide two numbers and return a quotient, i.e., the first number or number at the left is divided by the second number or number at the right and returns the quotient. 

Có hai loại toán tử phân chia: & nbsp;

(i) Phân khu Float: & NBSP;Float division: 

Lợi nhuận của toán tử này luôn là một số nổi, bất kể hai số là số nguyên. Ví dụ:

>>>5/5
1.0
>>>10/2
5.0
>>>-10/2
-5.0
>>>20.0/2
10.0

(ii) phân chia số nguyên (phân chia sàn): & nbsp;Integer division( Floor division): 

Chỉ số được trả về bởi toán tử này phụ thuộc vào đối số được thông qua. Nếu bất kỳ số nào là float, nó sẽ trả về đầu ra trong float. Nó còn được gọi là phân chia sàn bởi vì, nếu bất kỳ số nào là âm, thì đầu ra sẽ được tăng lên. Ví dụ:

>>>5//5
1
>>>3//2
1
>>>10//3
3

Hãy xem xét các tuyên bố dưới đây trong Python.

Python3

one
103386547
two
135680054
perc
0.0
1
one
103386547
two
135680054
perc
0.0
2
one
103386547
two
135680054
perc
0.0
3
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
6
one
103386547
two
135680054
perc
0.0
7

one
103386547
two
135680054
perc
0.0
1
one
103386547
two
135680054
perc
0.0
2____
from __future__ import division
0____23
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
6
one
103386547
two
135680054
perc
0.0
7

Output:

2
-3

Đầu ra đầu tiên là tốt, nhưng lần thứ hai có thể ngạc nhiên nếu chúng ta đến thế giới Java/C ++. Trong Python, nhà điều hành của ///4 làm việc như một bộ phận sàn cho các đối số số nguyên và phao. Tuy nhiên, nhà điều hành phân chia ‘/trả lại luôn luôn là một giá trị nổi.

Lưu ý: Toán tử // trực tiếp được sử dụng để trả về giá trị số nguyên gần nhất nhỏ hơn hoặc bằng một biểu thức hoặc giá trị được chỉ định. Vì vậy, từ mã trên, 5 // 2 trả về 2. Bạn biết rằng 5/2 là 2,5 và số nguyên gần nhất nhỏ hơn hoặc bằng là 2 [5 // 2]. (Nó nghịch đảo với toán học bình thường, Trong toán học bình thường, giá trị là 3).The “//” operator is used to return the closest integer value which is less than or equal to a specified expression or value. So from the above code, 5//2 returns 2. You know that 5/2 is 2.5, and the closest integer which is less than or equal is 2[5//2].( it is inverse to the normal maths, in normal maths the value is 3).

Thí dụ

Python3

one
103386547
two
135680054
perc
0.0
1
one
103386547
two
135680054
perc
0.0
2
from __future__ import division
8
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
6
one
103386547
two
135680054
perc
0.0
7

one
103386547
two
135680054
perc
0.0
1
one
103386547
two
135680054
perc
0.0
2____
from __future__ import division
0____38
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
6
one
103386547
two
135680054
perc
0.0
7

Nhà điều hành phân chia tầng thực là trên mạng //. Nó trả về giá trị sàn cho cả đối số số nguyên và dấu phẩy động.

Python3

one
103386547
two
135680054
perc
0.0
1
one
103386547
two
135680054
perc
0.0
2
one
103386547
two
135680054
perc
0.0
3
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
6
one
103386547
two
135680054
perc
0.0
7

one
103386547
two
135680054
perc
0.0
1
one
103386547
two
135680054
perc
0.0
2____
from __future__ import division
0____23
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
4
one
103386547
two
135680054
perc
0.0
6
one
103386547
two
135680054
perc
0.0
7

Đầu ra đầu tiên là tốt, nhưng lần thứ hai có thể ngạc nhiên nếu chúng ta đến thế giới Java/C ++. Trong Python, nhà điều hành của ///4 làm việc như một bộ phận sàn cho các đối số số nguyên và phao. Tuy nhiên, nhà điều hành phân chia ‘/trả lại luôn luôn là một giá trị nổi.

Lưu ý: Toán tử // trực tiếp được sử dụng để trả về giá trị số nguyên gần nhất nhỏ hơn hoặc bằng một biểu thức hoặc giá trị được chỉ định. Vì vậy, từ mã trên, 5 // 2 trả về 2. Bạn biết rằng 5/2 là 2,5 và số nguyên gần nhất nhỏ hơn hoặc bằng là 2 [5 // 2]. (Nó nghịch đảo với toán học bình thường, Trong toán học bình thường, giá trị là 3).

Thí dụ


Div có nghĩa là gì trong Python?

Div.Phân chia số nguyên: Được sử dụng để tìm thương số (số nguyên trước điểm thập phân) sau khi phân chia.Python sử dụng // cho điều này.100 Div 3 = 33 (giá trị thực 33.333333333 lặp lại)Integer division: Used to find the quotient (integer number before the decimal point) after division. Python uses // for this. 100 DIV 3 = 33 (actual value 33.333333333 repeating)

Loại phân chia nào ở Python?

Trong Python, có hai loại phân chia: phân chia số nguyên và phân chia phao.Bộ phận số nguyên trả lại sàn của bộ phận.Đó là, các giá trị sau điểm thập phân bị loại bỏ.integer division and float division. Integer division returns the floor of the division. That is, the values after the decimal point are discarded.