การส่งผ่านค่าแบบ - assumption...
TRANSCRIPT
![Page 1: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/1.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
Worksheet 7 (7 ส.ค. 2562)
สปดาหนนกเรยนจะไดเรยนรเพมเตมเกยวกบการสรางและเรยกใชฟงกชนในภาษา Python จากต วอย างด านล าง เราสามารถเรยกใชฟ งก ช น sum(a,b) จากตวอยางดานลางได 2 รปแบบ
รปแบบท 1 เปนการเรยกใชฟงกชนทเราสรางขนมาในฟงกชนอน เชน การเรยกใชทแสดงในบรรทดท 7 ถานกเรยนสงเกตใหดจะพบวาถงแมฟงกชน sum() จะมการ return คาออกมา ในรปแบบนเราไมจำาเปนตองมตวแปรอนมารบคา
รปแบบท 2 คอการเรยกใชทแสดงบรรทดท 9 คอมการกำาหนดตวแปรชอ result มารบคาทมการ return ออกมาจากฟงกชน sum() ซงในรปแบบนคาท return มาจากฟงกชน sum() จะสามารถนำาไปใชตอไปได
1) ใหนกเรยนเขยนฟงกชนชอ avg_max(a,b,c) เพอรบคาตวเลขทงหมดสามคา คำานวณหาคาเฉลยและคาสงสด และทำาการ return
![Page 2: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/2.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
คาทงสองออกมาจากฟงกชน หลงจากนนใหแสดงผลทงสองคาบนหนาจอ
2) ใหนกเรยนเขยนฟงกชนชอ avg_list(num_list) เพอทำาการรบคาตวแปรประเภท list ทมเลขจำานวนเตม (integer) และทำาการคำานวณหาคาเฉลย และสงคาดงกลาวออกมาจากฟงกชน หลงจากนนใหแสดงผลคาเฉลยบนหนาจอ
การสงผานคาแบบ Reference และ Value ในภาษา Python (Pass by reference vs value)
การสงผานคาในภาษาโปรแกรมมสองรปแบบหลกไดแก 1) Pass by Reference และ 2) Pass by Value ในภาษา Python จะเปนรปแบบท 1 (ในภาษาโปรแกรมอนอาจใชรปแบบทตางกน) จากภาพดานลางสำาหรบรปแบบ Pass by Reference หากคาของตวแปรมการเปลยนแปลงในฟงกชน คาทเปลยนไปกจะสะทอนไปยงตวแปรนนทอยนอกฟงกชน เนองจากการผานคาในลกษณะนเปนการสงตำาแหนงทอยในเมมโมรของคาตวแปรเขาไปในฟงกชน ซงจะเกดการแกไขคาทตำาแหนงนนเลย
ในขณะทรปแบบท 2 จะเปนการสงเฉพาะคาเขาไปในฟงกชน (ทำาการคดลอกคาไวในตำาแหนงเมมโมรตำาแหนงใหม ดงนนการแกไขคาจะไมสงผลกระทบตอคาตงตน
![Page 3: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/3.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
![Page 4: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/4.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
จากตวอยางดานลาง
![Page 5: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/5.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
จากตวอยางมการสรางฟงกชนทสรางขนมาทงหมดสองฟงกชนไดแก chagelist() และ changelist2() ฟงกชนแรกทำาการเพมเลข 5 เขาไปใน list และฟงกชนทสองทำาการเพมเลข 6 เขาไปใน list
จาก code เรมตนกำาหนดให mylist มเลขจำานวนเตมสตวไดแก 1,2,3 และ 4 ทบรรทด 13 เราทำาการเรยก, print(mylist) เพอแสดงตวเลขทอยใน list ค อ [1,2,3,4] บ น ห น า จ อ ห ล ง จ า ก น น เ ร า เ ร ย ก ฟ ง ก ช น changelist2() ซงเราผานคา mylist เขาไปในฟงกชน (เปน Pass by Reference) ซงหากเราทำาการแกไขหรอเปลยนอะไรใน mylist กจะมผลตอ mylist โดยตรง ในบรรทดท 8 changelist2(mylist) ทำาการเรยกฟงกชน changelist(mylist)
ในฟงกชน chagelist() เราทำาการเพมเลข 5 และพมพคาออกบนหนาจอดวย print(mylist) ผลทไดคอ [1,2,3,4,5] ทแสดงบนหนาจอ หลงจากนนโปรแกรมจะมาทำางานตอทบรรทดท 9 ซงเราเพมเลข 6 เขาไปใน mylist และทำาการพมพ mylist อกครง ทำาใหเราได [1,2,3,4,5,6] หลงจากนนเราทำาการเรยก ll print(mylist) again ทบรรทด 15 ซงแสดงคาใน mylist เปนครงท 4
อยางไรกตามหากเรามการสราง object ใหม (ในทนคอตวแปรใหม) ในฟงกชน ถงแมตวแปรนนจะมชอเหมอนกบตวแปรทเราผานคาเขามา คาทเปลยนแปลงไปในตวแปรใหม จะไมสงผลกบตวแปรทอยนอกฟงกชน ยกตวอยางเชน
![Page 6: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/6.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
จะเหนไดวาในบรรทดท 10 เรากำาหนดตวแปร mylist ขนมาโดยมค า [10,20,30] และเราทำาการ print(mylist) ในบรรทด 11 คาทแสดงบนหนาจอ จะเปน [10,20,30] ซงเปนคนละคากบทอยใน mylist (ทไดกำาหนดไวในบรรทดท 1) ทเราสงเขามา
ถาหากเราตองการใหตวแปรใหมทกำาหนดในฟงกชน เมอมการเปลยนแปลงคาในตวแปรนนแลว คาทเปลยนไปใหมผลกบตวแปรทอยนอกฟงกชน ค ำาตอบคอเราตองทำาการสงคากลบดวยคำาสง return จากตวอยางดานลางบรรทดท 12 และในบรรทดท 15 เรากกำาหนดใหตวแปร mylist มารบคาทสงออกมา
![Page 7: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/7.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
3) จากตวอยางโปรแกรมดานลาง เราตองการนบจำานวนตวอกษร m ในคำา (myword) ทเราสงเขาไปในฟงกชน และเมอเราทำาการพมพคา count ผลปรากฏวาคาออกมาเปน 0 จงหาสาเหตวาเกดจากปญหาใด และตองแกปญหาอยางไร
คำาตอบ _______________________________________
![Page 8: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/8.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
4) จากตวอยาง Python code ดานลาง จงตอบคำาถามตอไปน
- เราสามารถตอบผดไดกครง (การตอบผดคอไมไดใสคา yes หรอ no) ___________________
- argument ใน function ask_ok() ลำาดบทเทาไหรเปนตวกำาหนดจำานวนครงทสามารถตอบผดได ___________
- ในฟงกชนนมจำานวน arguments ทงหมดทตว _________
![Page 9: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/9.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
- ตอนเรยกฟงกชนทำาไมมการสงคาเขาแคเพยงหนงคา ซงนอยกวาจำานวน argument ทเรากำาหนด
ใหนกเรยนลองเรยกฟงกชนตามตวอยางขางลาง และลองใสคาอนทไมใช yes หรอ no และตอบคำาถาม
ask_ok('OK to overwrite the file?', 2)
- จำานวนครงทตอบผดไดคอ _____________________________________________________________
และใหลองask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
- อะไรทเปลยนไปจากตวอยางทแบบฝกหด 4 ___________________________________________________________
5) ใหเขยนฟงกชนทมช อวา replacevowel(input_str, v) ซงรบคาตวแปรชนด string ชอ input_str และตวแปร v ซงเปนสระทตองการใหถกแทนท ในฟงกชนใหทำาเอาสระทงหมดออกจากตวแปรทสงเขามา สระทเอาออกไปใหแทนทดวยเครองหมาย _ หลงจากนนใหสงคาตวแปรออก
หลงจากนนใหเขยน Python code เพอรบประโยคจากคยบอรดและเกบไวทตวแปร input_str และรบตวอกษรทเปนสระ (a, e, i,
![Page 10: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/10.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
o ห ร อ u) แ ล ะ เ ก บ ไ ว ท ต ว แ ป ร v ท ำา ก า ร เ ร ย ก ฟ ง ก ช น replacevowel(input_str, v) และพมพผลลพธทได
Hint: ฟงกชนในตวอยางดานลางทำาการแทนทอกษร a และ b ดวยเครองหมาย =
Note: ในภาษา Python เราสามารถกำาหนด syntax ในรปแบบ list เชน [“a”, “b”] หรอในรปแบบ '''ab''' เพอระบถงกลมตวอกษรทเราตองการใชงาน
6) ใหทำาการปรบปรงฟงกชนในแบบฝกหดท 5 นอกเหนอจากการแทนทสระดวยเครองหมาย _ ใหทำาการแทนทตวเลขทงหมดรวมถงเครองหมายทางคณตศาสตรดวยเครองหมาย _ ยกตวอยางเชน
7) ใหทำาการปรบปรงฟงกชนกอนหนา โดยใหทำาการa.แทนทสระ a และ e ดวยเครองหมาย * b.แทนทสระ i, o และ u ดวยเครองหมาย %
![Page 11: การส่งผ่านค่าแบบ - Assumption Universityportal.scitech.au.edu/.../08/Samsen_worksheet_7_2019.docx · Web viewจากต วอย างม การสร](https://reader037.vdocuments.pub/reader037/viewer/2022090112/5e43755e8db625353b52aa92/html5/thumbnails/11.jpg)
โรงเรยนสามเสนวทยาลย ชนมธยมศกษาปท 4/6 ปการศกษา 2562
c. แทนทตวเลขดวยเครองหมาย $ และd.แทนทอกษรตวใหญ (Capital letter) ดวยเครองหมาย +
8) ใหนกเรยนเขยนฟงกชน reflect_string(str1, str2) โดยฟงกทำาหนาทเปรยบเทยบวาคำาทงสองคำา str1 และ str2 เปนคำาทมตวอกษรเรยงสลบจากหนาไปหลงซงกนและกนหรอไม (อาจารยขอใชคำาศพทวาคำากระจก) เชน superman และ namrepus ถอวาเปนคำากระจก ถาใชใหพมพวาคำาทงสองเปนคำากระจก เชน “str1” and “str2” are reflected words ถาไมใชให พมพประโยค They are not reflected words.
9) ใหนกเรยนเขยนฟงกชน AddOnlyMatch(numlist1, numlist2) ทรบตวแปรประเภท list สองตวโดย list ทงสองมขนาดเทากน หนาทของฟงกชนคอใหเปรยบตวเลขของทงสอง list ทตำาแหนงเดยวกน ถาเปนเลขคหรอเลขคเหมอนกน ใหทำาการบวกเลขทงสองแลวใสไวใน list ใหม ถาเปนเลขตางกน เชน เลขคกบเลขค ในใสคา 0 ลงใน list แลวทำาการสงคา list ใหม (อาจจะตงชอเปน outlist) ออกนอกฟงกชนเพอทำาการแสดงคาบนหนาจอ
เชนnumlist1 = [1, 3, 5, 6, 7]numlist2 = [2, 1, 2, 1, 3]outlist ควรจะมคา [0, 4, 0, 0, 10]