วิธีใช้ // ใน Python สำหรับการแบ่งชั้น

ผู้ให้บริการแผนกชั้นของ Python//หารสองตัวเลขและปัดผลลัพธ์ลงไปเป็นจำนวนเต็มที่ใกล้ที่สุด การใช้มันอย่างถูกต้องจะป้องกันข้อบกพร่องในการปัดเศษที่ละเอียดอ่อนโดยเฉพาะอย่างยิ่งเมื่อพอร์ตตรรกะการแบ่งจำนวนเต็มหรือทำงานกับค่าลบ

วิธีที่ 1: คำนวณการแบ่งชั้นด้วย //

ขั้นตอนที่ 1:ใช้//เพื่อให้ได้ความฉลาดที่ปัดเศษลง

print(5 // 2)      # 2
print(10 // 3)     # 3
print(9 // 0.5)    # 18.0 (float operand → float result)
print(8.0 // 3)    # 2.0  (still floors)

ขั้นตอนที่ 2:ตรวจสอบตัวตนของแผนกa == (a // b) * b + (a % b)-

a, b = 17, 5
print(a == (a // b) * b + (a % b))  # True

ขั้นตอนที่ 3:เปรียบเทียบ/เพื่อดูความแตกต่าง

print(5 / 2)   # 2.5 (true division)
print(5 // 2)  # 2   (floor division)

วิธีที่ 2: แทนที่ int (x / y) ด้วย x // y (เมื่อปลอดภัย)

ขั้นตอนที่ 1:ค้นหาสถานที่ที่คุณแบ่งและแปลงเป็น int ทันที

# Before
mid = int(len(items) / 2)

ขั้นตอนที่ 2:แทนที่ด้วยการแบ่งชั้นเพื่อความตั้งใจที่ชัดเจนและการแปลงน้อยลง

อ่านเพิ่มเติม:

# After
mid = len(items) // 2

ขั้นตอนที่ 3:เรียกใช้การทดสอบเพื่อยืนยันผลลัพธ์ที่เหมือนกันสำหรับจำนวนบวก

for n in range(1, 11):
    a = int(n / 2)
    b = n // 2
    assert a == b

วิธีที่ 3: รับความฉลาดและส่วนที่เหลือร่วมกับ divmod

ขั้นตอนที่ 1:ใช้divmod(a, b)เพื่อให้ได้ทั้งชั้นและโมดูลัสในการโทรครั้งเดียว

duration = 500
minutes, seconds = divmod(duration, 60)
print(f"{minutes}:{seconds}")  # 8:20

ขั้นตอนที่ 2:โซ่divmodเป็นเวลาหลายชั่วโมงนาทีและวินาที

duration = 9907
minutes, seconds = divmod(duration, 60)
hours, minutes = divmod(minutes, 60)
print(f"{hours}:{minutes:02d}:{seconds:02d}")  # 2:46:07

วิธีที่ 4: จัดการตัวเลขติดลบอย่างถูกต้อง

ขั้นตอนที่ 1:ตรวจสอบวิธีการ//รอบด้วยเนกาทีฟ (มันมักจะลงไปสู่อินฟินิตี้เชิงลบ)

print(-5 / 2)   # -2.5
print(-5 // 2)  # -3  (floors down)

ขั้นตอนที่ 2:ใช้int(x / y)หรือmath.trunc(x / y)หากคุณต้องการการตัดทอนไปยังศูนย์แทนที่จะเป็นพื้น

import math
print(int(-5 / 2))     # -2 (truncates toward zero)
print(math.trunc(-5/2))# -2

ขั้นตอนที่ 3:ชอบมากกว่า//เมื่อต้องการพฤติกรรมพื้นสำหรับผลลัพธ์เชิงลบ

def pages_needed(total, per_page):
    # Floors down even for negatives; safe for totals ≥ 0
    return (total + per_page - 1) // per_page

วิธีที่ 5: อัปเดตค่าในสถานที่ด้วย // =

ขั้นตอนที่ 1:ใช้//=เพื่อแบ่งพื้นและกำหนดกลับไปที่ตัวแปรเดียวกัน

x = 23
x //= 4
print(x)  # 5

ขั้นตอนที่ 2:โปรดจำไว้ว่าการผสมกับลอยกลับมาลอย

y = 23
y //= 4.0
print(y, type(y))  # 5.0 <class 'float'>

ขั้นตอนที่ 3:ยืนยันว่าผู้ประกอบการแสดงความตั้งใจอย่างชัดเจนเมื่อไม่จำเป็นต้องใช้ส่วนที่เหลือ

batch = 137
batch //= 10  # number of full tens
print(batch)  # 13

เคล็ดลับด่วน:

  • //พื้น;/ส่งคืนความฉลาดทางที่แน่นอนเป็นลอย
  • ด้วยตัวถูกดำเนินการลอย//ส่งคืนลอยตัว (แต่ยังคงชั้นผลลัพธ์ตัวเลข)
  • ใช้divmod(a, b)เมื่อคุณต้องการทั้งความฉลาดและส่วนที่เหลือ
  • สำหรับค่าลบให้ชัดเจนว่าคุณต้องการพื้น (//) หรือการตัดทอน (int()-math.trunc()-

นั่นคือส่วนสำคัญ: เอื้อมมือไป//เมื่อคุณต้องการความฉลาดที่ปัดเศษลงและเก็บไว้divmodในชุดเครื่องมือของคุณเมื่อคุณต้องการส่วนที่เหลือ

Related Posts