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

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


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

ดังนั้น หากอินพุตเป็นเหมือนเศษส่วน =[(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 ทำ
    • แทรกวัตถุเศษส่วนใหม่จาก (ตัวเศษ ตัวส่วน) คู่ f ที่ส่วนท้ายของเศษส่วน
  • t :=ลด (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)