คอมพิวเตอร์และการโปรแกรม

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คำสั่งควบคุมในโปรแกรม Interactive C
Advertisements

โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
สื่อการเรียนรู้ โดย นางสุมิตรา ดีมี
1 Solutions: Assignment #1 Based on the contract specification and the given historical price information of the SET50 Index Futures and Gold10 Baht Futures.
เฉลย Lab 10 Loop.
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
Repetitive Statements (Looping)
โครงสร้างคำสั่งแบบเลือก (Selection)
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
บทที่ 7 การกำหนดชนิดข้อมูลใหม่
อะเรย์ในภาษา php การเขียนเว็บเพจด้วยภาษา php ศูนย์คอมพิวเตอร์โรงเรียนปลวกแดงพิทยาคม.
การสอบถามข้อมูลด้วยฟังก์ชั่นสำหรับ
Control Statements.
Recursion การเรียกซ้ำ
การใช้ระบบปฏิบัติการ UNIX พื้นฐาน
จุมพฏ พงศ์ศักดิ์ศรี จุมพฏ พงศ์ศักดิ์ศรี
หลักการเขียนโปรแกรม ( )
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
Collections. Data structures Data Structures ( โครงสร้างข้อมูล ) เกิดจากการ นำข้อมูลขั้นพื้นฐานที่แบ่งแยกไม่ได้ (atomic data type) เช่น int, char, double.
สูตรคำนวณตัวแปรตำเนินการ = A1 + A2 * A3 เซล A1, A2 และ A3 เครื่องหมาย + และ * = B3 * 5 /100 เซล B3, เลข 5 และ 100 เครื่องหมาย * และ / = D5:D10 เซล.
Queue Lecturer : Kritawan Siriboon, Room no. 913
โครงการอบรมหลักสูตรประกาศนียบัตร ผู้ตรวจสอบภายในภาครัฐ
ภาษา SQL (Structured Query Language)
หลักการโปรแกรม อ.ธนากร อุยพานิชย์.
นิพจน์ ตัวแปร และฟังก์ชัน
SQL (Structured Query Language)
Concept of Programing.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
INC 161 , CPE 100 Computer Programming
Control Statements.
Data Structure & Algorithm Concept
int isEmpty ( node **ptr_head) ;
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (Pseudo-Code)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
คำอธิบายรายวิชา การเขียนผังงาน รหัสเทียม ตรรกศาสตร์เบื้องต้น การเขียนโปรแกรมคอมพิวเตอร์แบบโครงสร้าง ชนิดตัวแปร ตัวดำเนินการทางตรรกะ ตัวดำเนินการเปรียบเทียบ.
อุทกภัย (Floods) เป็นภัยธรรมชาติที่ทำให้เกิดสภาวะน้ำท่วมหรือน้ำท่วมฉับพลัน เกิดจากฝนตกหนักต่อเนื่องกันเป็นเวลานาน บางครั้งทำให้เกิดแผ่นดินถล่ม อาจมีสาเหตุจากพายุหมุนเขตร้อนลมมรสุมมีกำลังแรง.
Container Throughput at Laem Chabang Port 2015
เตรียมเงิน/หุ้นให้เพียงพอสำหรับการ Settlement แบบ 2 วันรวมกัน
การจัดการรายได้รถไฟสาย กรุงเทพฯ - ศรีสะเกษ
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การเขียนรหัสเทียม (Pseudo Code)
การวัดอัลกอริทึม (Analysis of Algorithm)
ส่วนการทะเบียนทั่วไป สำนักบริหารการทะเบียน
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop) Part1
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
การเขียนโปรแกรมย่อย.
Quick Python Lecturers : Boontee Kruatrachue Room no Kritawan Siriboon Room no. 913.
การพยากรณ์ ญาลดา พรประเสริฐ คณะวิทยาการจัดการ
Chapter 7 ฟังก์ชัน Function.
การกระจายอายุของบุคลากร มหาวิทยาลัยมหิดล สำนักงานสภามหาวิทยาลัย
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
ปฏิทิน 2561 Calendar 2018 วันสำคัญที่เกี่ยวข้อง ด้านสิทธิมนุษยชน ตามที่องค์การสหประชาชาติ (UN) กำหนด Rights and Liberties Protection Department.
การกระจายอายุของบุคลากร มหาวิทยาลัยมหิดล คณะวิทยาศาสตร์
อุทธรณ์,ฎีกา.
International Marketing
ลองนึกสิ คาบที่แล้ว เรียนอะไร.
การกระจายอายุของบุคลากร เวชศาสตร์เขตร้อน
การสรุปผลข้อมูล และ Action Query
2016 NH CAL RIPKEN LEAGUES WEST AREA TOURNAMENT
Evaluation and Development of Information System for Risk groups for Diabetes in Health Region 4 การประเมินและพัฒนาระบบข้อมูลกลุ่มเสี่ยงต่อโรคเบาหวานในพื้นที่เขตสุขภาพที่
วันสำคัญที่เกี่ยวข้องด้านสิทธิมนุษยชน ตามที่องค์การสหประชาชาติ (UN) กำหนด Calendar 2019 ปฏิทิน 2562.
狗隻的訓練 聖士提反女子中學附屬小學 孫晞庭.
การสร้างผังงานโปรแกรม
Quick Python Lecturers : Boontee Kruatrachue Room no Kritawan Siriboon Room no. 913.
หลักการบริหารงานแม่บ้านโรงแรม โดย จรูญศักดิ์ สุนันต๊ะ
Chapter 3: Measures of Central Tendency and Measure of Dispersion
ใบสำเนางานนำเสนอ:

01204111 คอมพิวเตอร์และการโปรแกรม รายการ 01204111 คอมพิวเตอร์และการโปรแกรม

เนื้อหา แนวคิดเกี่ยวกับรายการ รายการและการอ้างถึงข้อมูลในรายการ คำสั่ง for การดำเนินการกับรายการ การทำซ้ำด้วยคำสั่ง for ตัวอย่าง

อะไรคือรายการ

ตัวแปร 5 ตัว ใช้ตัวแปร 5 เพื่อเก็บข้อมูล 5 ค่า s1 = 10 s2 = 16 s3 = 15 s4 = 9 s5 = 23 10 16 15 23 9 s1 s2 s3 s5 s4 โปรแกรม

คำนวณสถิติเกี่ยวกับคะแนน คำนวนค่าอะไร? t = 0 t += s1 t += s2 t += s3 t += s4 t += s5 m = 0 if s1 > m: m = s1 if s2 > m: m = s2 if s3 > m: m = s3 if s4 > m: m = s4 if s5 > m: m = s5 คำนวนค่าอะไร? ค่ามากที่สุด ผลรวม ค่าเฉลี่ย avg = t / 5 คำนวนค่าอะไร?

ตัวดำเนินการเพิ่มเติม ในหน้าก่อน เราได้ใช้ตัวดำเนินการใหม่: +=. a = a + 1 a += 1 a = a * 2 a *= 2

คะแนนสอบ ในห้องหนึ่ง มีนักเรียน 50 คน จะเก็บคะแนนสอบวิชาหนึ่งอย่างไร?

ประมวลผล ลำบากมาก ตัวแปร 50 ตัว ใช้ตัวแปร 50 ตัว เพื่อเก็บข้อมูล 50 ค่า s1 = 10 s2 = 16 s3 = 15 s4 = 9 s5 = 23 … … … ประมวลผล ลำบากมาก

รายการ ในภาษาไพธอนมีรูปแบบการเก็บข้อมูลหลาย ๆ ค่าไว้ด้วยกัน เรียกว่า รายการ (list) ตัวอย่างของรายการ [10, 16, 15, 9, 23] 10 16 15 9 23

, การเขียนรายการ เขียนอยู่ในเครื่องหมายวงเล็บเหลี่ยม โดยคั่นข้อมูลแต่ละค่าด้วยเครื่องหมายลูกน้ำ ( , ) สามารถมีเครื่องหมายลูกน้ำหลังจากข้อมูลตัวสุดท้ายได้

ตัวอย่าง รายการของจำนวนวันในแต่ละเดือน รายการของชื่อวัน [31,28,31,30,31,30, 31,31,30,31,30,31] รายการของชื่อวัน ['sun','mon','tue','wed', 'thu','fri','sat']

["somying", "somsak", "somchai"] ตัวอย่างรายการ ตัวอย่างของรายการ ["somying", "somsak", "somchai"] "somying" "somsak" "somchai"

รายการเป็นข้อมูล เราสามารถนำตัวแปรไปอ้างถึงรายการได้ scores = [10, 16, 15, 9, 23] 10 16 15 9 23 scores

การอ้างถึงข้อมูลในรายการ

ดัชนี เราสามารถอ้างถึงข้อมูลในรายการโดยระบุดัชนี ข้อมูลแรกมีดัชนีเป็น 0 ข้อมูลที่สองมีดัชนีเป็น 1 ไล่ไปเรื่อย ๆ 10 16 15 9 23 scores scores[0] scores[1] scores[2] scores[3] scores[4]

การอ้างถึงข้อมูล อ้างถึงโดยใช้ดัชนี ช่องแรกเริ่มที่ 0 scores = [10, 16, 15, 9, 23] print(scores[0]) >>> 10 print(scores[3]) >>> 9 print(scores[1] + scores[4]) >>> 39

การอ้างถึงข้อมูลในรายการ >>> print(days[3]) days 1 2 3 4 5 6 'sun' 'mon' 'tue' 'wed' 'thu' 'fri' 'sat' wed

มุมนักคิด เขียนโปรแกรมที่พิมพ์ข้อมูลทุกตัวในรายการ a ด้านล่าง เราไม่อนุญาตให้เขียนคำสั่ง print มากกว่าหนึ่งครั้ง a = [1,2,1,4,3,2,4,2,5,6,3,7] หมายเหตุ: มีข้อมูลจำนวน 12 ตัวในรายการ คำใบ้: ทดลองใช้คำสั่ง while

มุมนักคิด: เฉลย a = [1,2,1,4,3,2,4,2,5,6,3,7] i = 0 while i <= 11: print(a[i]) i = i + 1

แบบฝึกหัด ผลลัพธ์คืออะไร? ps = [2,3,5,7,11] i = 0 while i<5: print(ps[i]) i = i + 2 2 5 11

แบบฝึกหัด (เพิ่ม) ผลลัพธ์คืออะไร? ps = [2,3,5,7,11,13] nn = [1,2,1,1, 2, 1] i = 0 while i<6: print(ps[i]) i = i + nn[i] 2 3 7 11

การแก้ไขข้อมูลในรายการ ในลักษณะเดียวกับการอ้างถึงข้อมูลในรายการ เราก็สามารถแก้ไขข้อมูลในรายการได้ >>> s = [10,20,30,40,50] >>> s[2] = 5 >>> s [10,20,5,40,50] >>> s[4] += 7 >>> s [10,20,5,40,57]

แบบฝึกหัด อะไรคือผลลัพธ์ของโปรแกรมนี้ 1 2 2 3 3 4 ps = [1,2,1,3,1,4] t = 0 j = 0 while j < 6: if ps[j] > t: t = ps[j] else: ps[j] = t print(ps[j]) j += 1 1 2 2 3 3 4

รายการที่มีข้อมูลหลากหลาย รายการสามารถมีข้อมูลที่หลากหลายได้ด้วย stinfo = ["dang", 20, 167, 78.5] "dang 20 167 78.5 stinfo stinfo[0] stinfo[1] stinfo[2] stinfo[3]

เกิดข้อผิดพลาดเมื่อพยายามอ้างถึงข้อมูลในรายการเปล่า รายการว่าง รายการที่ไม่มีข้อมูลอยู่เลยก็เป็นรายการเช่นกัน >>> mylist = [] >>> a = mylist[0] Traceback (most recent call last): builtins.IndexError: list index out of range เกิดข้อผิดพลาดเมื่อพยายามอ้างถึงข้อมูลในรายการเปล่า

คำสั่ง for

อย่าลืมว่าต้องย่อหน้าเท่า ๆ กัน คำสั่ง for เราสามารถใช้คำสั่ง for เพื่อไล่พิจารณาข้อมูลทุกตัวในรายการได้ รูปแบบ: for ตัวแปร in รายการ: คำสั่ง คำสั่ง อย่าลืมว่าต้องย่อหน้าเท่า ๆ กัน

คำสั่ง for คำสั่งในย่อหน้าตามคำสั่ง for จะถูกเรียกให้ทำงาน โดยในแต่ละรอบตัวแปรที่ระบุในคำสั่ง for จะอ้างถึงข้อมูลในรายการทีละตัว for x in [2,3,5,7,11]: print(x) 2 3 2 3 5 7 11 x 5 x 7 x 11 x x

มุมนักคิด เขียนโปรแกรมหาผลรวมของข้อมูลทั้งหมดในรายการต่อไปนี้ a = [1,2,1,4,3,2,4,2,5,6,3,7] a = [1,2,1,4,3,2,4,2,5,6,3,7] total = 0 for x in a: total = total + x print(total)

ทำให้ประมวลผลได้ง่ายขึ้น... คำนวนผลรวม s = [10,16,15,9,13] t = 0 for x in s: t += x คำนวนค่ามากที่สุด m = 0 for x in s: if x > m: x = m

...แม้ข้อมูลจะมาก คำนวนผลรวม ไม่มีการเปลี่ยนแปลง คำนวนค่ามากที่สุด s = [10,16,15,9,13,20,12,11,2,14, 6,7,13,4,6,7,14,18,9,12] t = 0 for x in s: t += x คำนวนผลรวม ไม่มีการเปลี่ยนแปลง m = 0 for x in s: if x > m: x = m คำนวนค่ามากที่สุด

สรุปการใช้ข้อมูลในรายการ การอ้างถึงข้อมูลแต่ละตัว a[5] การไล่พิจารณาข้อมูลทีละตัว for x in a: c += x a a

การดำเนินการกับรายการ

การทำงานกับรายการ ตัวดำเนินงานที่เกี่ยวกับรายการ ฟังก์ชันเกี่ยวกับรายการ การเพิ่มข้อมูลในรายการ

ตัวดำเนินงานบนรายการ (1) เราสามารถนำรายการมาบวกกันได้ ผลลัพธ์ที่ได้คือรายการใหม่ที่นำข้อมูลจากรายการทั้งสองมารวมกัน >>> [1,2] + [5,10,15] [1,2,5,10,15] 1 2 5 10 15

ตัวดำเนินงานบนรายการ (2) เราสามารถนำจำนวนเต็มมาคูณกับรายการได้ ผลลัพธ์คือรายการดังกล่าวซ้ำ ๆ กันหลายครั้ง >>> [1,2] * 3 [1,2,1,2,1,2] 1 มีประโยชน์เมื่อต้องการ กำหนดค่าเริ่มต้นให้กับ รายการ 2

ตัวดำเนินงานบนรายการ (3) สมมติต้องการสร้างรายการเพื่อเก็บค่าจำนวนเต็มจำนวน 10 ช่อง โดยมีค่าเริ่มต้นเป็น 0 >>> [0] * 10 [0,0,0,0,0,0,0,0,0,0]

ฟังก์ชันเกี่ยวกับรายการ ฟังก์ชันที่สำคัญและใช้บ่อยได้แก่ ฟังก์ชัน หน้าที่ ตัวอย่าง ผลลัพธ์ len คืนจำนวนสมาชิก len([1,2,5]) 3 sum คืนผลรวม sum([1,2,5]) 8 max คืนค่ามากที่สุด max([1,2,5]) 5 min คืนค่าน้อยที่สุด min([1,2,5]) 1

ตัวอย่างการใช้งาน >>> len([]) 0 >>> s = [1,2] + [3,5,10] >>> sum(s) 21 >>> max(s) 10 >>> len(s) 5 >>> len(s + [1,6]) #=>[1,2,3,5,10,1,6] 7

การเพิ่มข้อมูลในรายการ เราสามารถเพิ่มข้อมูลในรายการโดยการเรียกฟังก์ชัน append ดังตัวอย่างการเรียกใช้ผ่าน console ด้านล่าง >>> s = [1,2,5] >>> s.append(10) >>> s [1,2,5,10]

ตัวอย่างที่ 1

โปรแกรมสถิติ เราจะเขียนโปรแกรมคำนวณค่าสถิติอย่างง่าย เราจะรับข้อมูลจากผู้ใช้จนกระทั่งผู้ใช้พิมพ์ -1 จากนั้นจะแสดงผลรวม ค่าเฉลี่ย ค่าสูงสุด และค่าต่ำสุด

ส่วนของโปรแกรมหลัก data = read_input() # อ่านข้อมูลไว้ในรายการ total = _____________________ average = ___________________ max = _______________________ min = _______________________ # display output sum(data) total / len(data) max(data) min(data)

มุมนักคิด เขียนฟังก์ชัน read_list ที่รับค่าจากผู้ใช้จนกระทั่งป้อน -1 แล้วคือค่าทั้งหมดที่รับมาเป็นรายการ def read_list(): print("Enter list (-1 to end):") data = [] return data x = int(input()) while x!=-1: data.append(x) x = int(input())

การทำซ้ำด้วยคำสั่ง for

การทำซ้ำด้วยคำสั่ง for โปรแกรมนี้คำนวณอะไร? t = 1 for i in [1,2,3,4,5]: t *= i print(t)

การพิมพ์จำนวนวันของแต่ละเดือน months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dev'] days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] for i in [0,1,2,3,4,5,6,7,8,9,10,11]: print(months[i],days[i])

ฟังก์ชัน range months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dev'] days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] for i in range(12): print(months[i],days[i])

ฟังก์ชัน range ฟังก์ชัน range จะคืนค่าวัตถุที่มีลักษณะเหมือนกับรายการ ฟังก์ชัน range มีลักษณะการใช้งานดังนี้ รูปแบบ ผลลัพธ์ range(r) รายการตั้งแต่ 0 ถึง r-1 range(7) => [0,1,2,3,4,5,6] range(a,b) รายการตั้งแต่ a ถึง b-1 range(3,7) => [3,4,5,6]

ฝึกหัด โปรแกรมด้านล่างคำนวณอะไร? t = 0 for i in range(100): t += i*i print(t)

ฝึกหัด (ต่อ) โปรแกรมด้านล่างคำนวณอะไร? t = 0 for i in range(200): if i % 3 == 0: t += i print(t)

ฝึกหัด ไปทำกันทีละขั้น def is_prime(n): ไปทำกันทีละขั้น จำนวนเฉพาะคือจำนวนเต็มบวกที่มีจำนวนเต็มบวกหารลงทั้งสิ้น 2 จำนวน จงเขียนฟังก์ชัน is_prime ที่คืนค่า True ก็ต่อเมื่อ n เป็นจำนวนเฉพาะ

มุมนักคิด def count_factors(n): count = 0 for f in range(1, n + 1): if n % f == 0: count += 1 return count def count_factors(n): จงเขียนฟังก์ชัน count_factors ที่คืนจำนวนของจำนวนเต็มที่หาร n ลงตัว โดยใช้คำสั่ง for

มุมนักคิด ถ้าเปลี่ยนเป็นแบบนี้จะเกิดอะไรขึ้น? def count_factors(n): count = 0 for f in range(1, n + 1): if n % f == 0: count += 1 return count def count_factors(n): range(n + 1): ถ้าเปลี่ยนเป็นแบบนี้จะเกิดอะไรขึ้น? จงเขียนฟังก์ชัน count_factors ที่คืนจำนวนของจำนวนเต็มที่หาร n ลงตัว โดยใช้คำสั่ง for ZeroDivisionError: integer division or modulo by zero

เปรียบเทียบ def count_factors(n): count = 0 for f in range(1, n+1): if n % f == 0: count = count + 1 return count def count_factors(n): count = 0 f = 1 while f <= n: if n % f == 0: count = count+1 f = f + 1 return count

ฝึกหัด นำมาเขียน is_prime def is_prime(n): def is_prime(n): return count_factors(n)==2 นำมาเขียน is_prime จำนวนเฉพาะคือจำนวนเต็มบวกที่มีจำนวนเต็มบวกหารลงทั้งสิ้น 2 จำนวน จงเขียนฟังก์ชัน is_prime ที่คืนค่า True ก็ต่อเมื่อ n เป็นจำนวนเฉพาะ

ตัวอย่างที่ 2

นับผลโหวต ในการเลือกตัวแทนนิสิตครั้งหนึ่ง มีผู้สมัครทั้งสิ้น 5 คน มีหมายเลข 1 ถึง 5 ต้องการเขียนโปรแกรมรับรายการหมายเลขที่นิสิตลงคะแนน จากนั้นคำนวณว่าผู้สมัครคนใดชนะการเลือกตั้ง

จะเก็บคะแนนโหวตได้อย่างไร เนื่องจากมีผู้สมัคร 5 คน เราจะใช้รายการที่เก็บข้อมูลได้ 5 ค่า อย่างไรก็ตาม เนื่องจากผู้สมัครเริ่มต้นที่หมายเลข 1 เราจะใช้รายการจำนวน 6 ช่อง เพื่อให้สามารถอ้างถึงข้อมูลด้วยดัชนี 1 – 5 ได้ ไม่ได้ใช้ เก็บคะแนนโหวต

เขียนสะดวกกว่า (ในกรณีที่มีจำนวน ผู้สมัครจำนวนมาก) กำหนดค่าเริ่มต้น คะแนนเริ่มต้นของผู้สมัครทุกคนมีค่าเป็น 0 scores = [0,0,0,0,0,0] scores = [0] * 6 เขียนสะดวกกว่า (ในกรณีที่มีจำนวน ผู้สมัครจำนวนมาก)

รับค่าและปรับคะแนนโหวต scores = [0] * 6 choice = int(input()) while choice != -1: scores[choice] += 1 choice = int(input())

แสดงผล scores = [0] * 6 choice = int(input()) while choice != -1: scores[choice] += 1 choice = int(input()) show_result(scores) def show_result(s): for i in range(5): cnum = i + 1 print(cnum,"gets",s[cnum],"votes") def show_result(s): for cnum in range(1,len(s)): print(cnum,"gets",s[cnum],"votes")

มุมนักคิด เขียนฟังก์ชัน freq(ls,x) ที่รับรายการ ls และข้อมูล x จากนั้นคืนค่าจำนวนครั้งที่ x ปรากฏในรายการดังกล่าว ตัวอย่างการใช้งาน: a = [1,2,1,1] print(freq(a,1)) print(freq(a,2)) print(freq(a,3)) 3 1 0

มุมนักคิด: เฉลย def freq(ls,x): c = 0 for y in ls: if y == x: c += 1 return c