Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาผลคูณของจำนวนตรรกยะด้วยฟังก์ชัน reduce ใน Python

สมมติว่าเรามีรายการของจำนวนตรรกยะ (เศษส่วน) เราต้องการหาผลคูณของพวกมันโดยใช้ฟังก์ชัน reduce() ฟังก์ชัน reduce() จะนำฟังก์ชันที่รับอาร์กิวเมนต์สองตัวไปประยุกต์ใช้กับรายการวัตถุจากซ้ายไปขวาอย่างสะสม

ตัวอย่างเช่น หาก fractions = [(5,3),(2,8),(6,9),(5,12),(7,2)] ผลลัพธ์จะเป็น (175, 432) เพราะ 5/3 × 2/8 × 6/9 × 5/12 × 7/2 = (5×2×6×5×7)/(3×8×9×12×2) = 2100/5184 = 175/432

ขั้นตอนการแก้ปัญหา

  • สร้างรายการ fracs ใหม่
  • สำหรับแต่ละ f ใน frac:
    • สร้างอ็อบเจ็กต์ Fraction จากคู่ (ตัวเศษ, ตัวส่วน) f แล้วเพิ่มเข้าไปใน fracs
  • t := reduce(fracs ด้วยฟังก์ชัน func(x, y) คืนค่า x*y)
  • คืนค่าคู่ของ (ตัวเศษของ t, ตัวส่วนของ t)

ตัวอย่างโค้ด

from fractions import Fraction
from functools import reduce

def solve(frac):
    fracs = []
    for f in frac:
        fracs.append(Fraction(*f))
    t = reduce(lambda x, y: x * y, fracs)
    return t.numerator, t.denominator

frac = [(5,3),(2,8),(6,9),(5,12),(7,2)]
print(solve(frac))

อินพุต

[(5,3),(2,8),(6,9),(5,12),(7,2)]

เอาต์พุต

(175, 432)