หาผลรวมของตัวเลขโดยให้รับค่าได้โดยไม่จำกัดจำนวน

 

โจทย์

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

\[\sum_{i=1}^{m}a_i = a_1 + a_2 + ... + a_i + ... + a_m\]

สมการนี้แสดงผลรวมของชุดตัวเลข โดยสามารถอธิบายได้ดังนี้

  1. \(\sum\) (ซิกมา) เป็นสัญลักษณ์ที่ใช้แทนการรวมค่า

  2. \(i=1\) ด้านล่างของ \(\sum\) แสดงค่าเริ่มต้นของตัวนับ \(i\) ซึ่งในที่นี้คือ 1

  3. \(m\) ด้านบนของ \(\sum\) แสดงค่าสุดท้ายของตัวนับ \(i\)

  4. \(a_i\) แสดงสมาชิกทั่วไปในลำดับของตัวเลข โดย \(i\) เป็นตำแหน่งของสมาชิกนั้นๆ

  5. ด้านขวาของเครื่องหมาย = แสดงการบวกกันของสมาชิกทั้งหมดในลำดับ ตั้งแต่ \(a_1\) (สมาชิกตัวแรก) ไปจนถึง \(a_m\) (สมาชิกตัวสุดท้าย)

ดังนั้น สมการนี้จึงหมายถึงการบวกรวมกันของสมาชิกทุกตัวในลำดับ \(a\) ตั้งแต่ตัวแรกจนถึงตัวสุดท้าย

โปรแกรม

a = []
while True:
    i = input("Enter a number")
    if not i:
        break
    else:
        a.append(int(i))

print("a =", a)

sum = 0
for i in a:
    sum += i

print(sum)

คำอธิบายโปรแกรม

โปรแกรมนี้ทำงานตามขั้นตอนดังนี้

  1. สร้างลิสต์ว่าง a เพื่อเก็บตัวเลขที่ผู้ใช้ป้อน

  2. เริ่มลูป while True เพื่อรับค่าจากผู้ใช้ไปเรื่อยๆ:

    • รับค่าจากผู้ใช้ด้วยฟังก์ชัน input() และเก็บในตัวแปร i

    • ถ้าผู้ใช้ไม่ป้อนค่า (กด Enter โดยไม่ใส่ข้อมูล) จะออกจากลูปด้วยคำสั่ง break

    • ถ้าผู้ใช้ป้อนค่า จะแปลงค่านั้นเป็นตัวเลขจำนวนเต็มด้วย int() และเพิ่มเข้าไปในลิสต์ a ด้วยเมธอด append()

  3. แสดงลิสต์ a ที่เก็บตัวเลขทั้งหมดที่ผู้ใช้ป้อน

  4. สร้างตัวแปร sum และกำหนดค่าเริ่มต้นเป็น 0

  5. วนลูปผ่านทุกตัวเลขในลิสต์ a:

    • บวกแต่ละตัวเลขเข้ากับ sum โดยใช้ sum += i

  6. แสดงผลรวมทั้งหมดที่คำนวณได้