นาย อารักษ์ ภูพาที
5701012620144
Assignment 1 : https://bitbucket.org/a5720144/vending-machine/src
Assignment 2 : https://bitbucket.org/a5720144/clean-csv/src
## Read me ##
testcsv.py เป็น file ที่ทดสอบในการ clean ข้อมูล ในแบบ textmode
แต่ตัวงานจริงๆคือ studentattendancecalculator.py
Test 2 :
+ Kangaroo
- Textmode : https://bitbucket.org/a5720144/test1-textmode/src
- Kivy : https://bitbucket.org/a5720144/test1-kivy/src
+ Insertion Sort
- Textmode : https://bitbucket.org/a5720144/test2-text-mode/src
- Kivy : https://bitbucket.org/a5720144/test2-kivy/src
Test 3 :
## Read me ##
อยู่ใน repository เดียวกันกับ Assignment 1
ข้อ 2 : Hashcode คือ ตั้งแต่ 42:5a3cc073fd63 จนถึง 44:1ab3b822dc19
ข้อ 3 : Hashcode คือ 45:6e38426399de
วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2558
วันพุธที่ 18 พฤศจิกายน พ.ศ. 2558
วันจันทร์ที่ 14 กันยายน พ.ศ. 2558
Python GUI : Starting with Kivy
ทำไมต้อง Kivy ?!?!?
- Kivy มี built-in ที่รองรับอุปกรณ์ Multitouch
- Kivy สามารถนำ code Python ไปทำงานบน Moblie ได้
- Kivy สามารถใช้แทน Graphical interface เช่น HTML , CSS ได้
- Kivy ทำให้สามารถเขียน Application เดียว แต่ทำงานได้หลาย OS
วิธีการ Installation (สำหรับ python3)
ตัวอย่างต่างๆ จะอยู่ใน /usr/share/kivy-examples
- Kivy มี built-in ที่รองรับอุปกรณ์ Multitouch
- Kivy สามารถนำ code Python ไปทำงานบน Moblie ได้
- Kivy สามารถใช้แทน Graphical interface เช่น HTML , CSS ได้
- Kivy ทำให้สามารถเขียน Application เดียว แต่ทำงานได้หลาย OS
วิธีการ Installation (สำหรับ python3)
ตัวอย่างต่างๆ จะอยู่ใน /usr/share/kivy-examples
Version Control System : Install Mercurial
วิธีการ Install Mercurial
เปิด Terminal ขึ้นมา แล้วพิมคำสั่งตามด้านล่าง
credit : http://stackoverflow.com/questions/5627414/correct-way-to-install-mercurial-on-ubuntu
จากนั้นก็ Install หน้าตาจะประมาณนี้
และนี่ คือคำสั่งพื้นฐานของ Mercurial สามารถทราบได้ด้วยการพิม hg ลงใน Terminal
จากนั้น cd ไปที่ตำแหน่งที่เราต้องการสร้าง Directory ที่ต้องการเก็บ Source code (สมมติ Directory ชื่อ Building) แล้วพิม
จะทำการสร้าง Directory ขึ้นมา
จากนั้นนำ File source code ไปเก็บใน Directory ที่สร้างขึ้น
จากนั้น cd ไป Directory ที่สร้างขึ้น แล้วพิม
Mercurial จะทำการตรวจสอบ File ใน Directory และจะทำการ Add ไฟล์ให้
จากนั้น ให้ทำการพิม
เพื่อทำการแก้ไขค่า username
โปรแกรมจะให้เลือก editor ที่ต้องการจะใช้ ในที่นี้ผมเลือก nano
https://bitbucket.org/a5720144/building-software-system-i
แล้วแก้ค่าตามนี้
โดย username คือ username ของเรา แล้วตามด้วย <email>
ส่วน default ใน paths คือ url ของ repository ใน bitbucket เพื่อที่เวลา push จะทำการ push ไปใน repository นี้โดยอัตโนมัติ
เปิด Terminal ขึ้นมา แล้วพิมคำสั่งตามด้านล่าง
credit : http://stackoverflow.com/questions/5627414/correct-way-to-install-mercurial-on-ubuntu
จากนั้นก็ Install หน้าตาจะประมาณนี้
และนี่ คือคำสั่งพื้นฐานของ Mercurial สามารถทราบได้ด้วยการพิม hg ลงใน Terminal
จากนั้น cd ไปที่ตำแหน่งที่เราต้องการสร้าง Directory ที่ต้องการเก็บ Source code (สมมติ Directory ชื่อ Building) แล้วพิม
จะทำการสร้าง Directory ขึ้นมา
จากนั้นนำ File source code ไปเก็บใน Directory ที่สร้างขึ้น
จากนั้น cd ไป Directory ที่สร้างขึ้น แล้วพิม
Mercurial จะทำการตรวจสอบ File ใน Directory และจะทำการ Add ไฟล์ให้
จากนั้น ให้ทำการพิม
เพื่อทำการแก้ไขค่า username
โปรแกรมจะให้เลือก editor ที่ต้องการจะใช้ ในที่นี้ผมเลือก nano
https://bitbucket.org/a5720144/building-software-system-i
แล้วแก้ค่าตามนี้
โดย username คือ username ของเรา แล้วตามด้วย <email>
ส่วน default ใน paths คือ url ของ repository ใน bitbucket เพื่อที่เวลา push จะทำการ push ไปใน repository นี้โดยอัตโนมัติ
วันจันทร์ที่ 7 กันยายน พ.ศ. 2558
Python Practice : Capital
1111 : เมืองหลวง (Capital)
Problem type :
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
Problem type :
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
ในประเทศแห่งหนึ่ง เมืองจำนวน N เมือง ถูกกำหนดชื่อด้วยจำนวนเต็มตั้งแต่ 1 ถึง N ที่ไม่ซ้ำกันเลย เมืองทั้งหมดถูกเชื่อมกันด้วยถนนทั้งสิ้น N-1 เส้น ทำให้เมืองสองเมืองใด ๆ สามารถไปมาหาสู่กันได้ด้วยเส้นทาง เส้นทางหนึ่งเสมอ
คุณเป็นชาวบ้านคนหนึ่งที่อาศัยอยู่ที่เมืองหมายเลข 1 และคุณต้องการทราบว่าเมืองที่อยู่ไกลจากเมืองหมายเลข 1 ที่สุดนั้น ห่างจากเมืองหมายเลข 1 เท่าไร
ข้อมูลนำเข้า
บรรทัดแรกประกอบด้วยจำนวนนับ n แทนจำนวนเมืองทั้งหมด ( 1 < n < 100 001 )
บรรทัดถัดมา n-1 บรรทัดเป็นข้อมูลของถนนแต่ละเส้น โดยจะประกอบด้วยจำนวนเต็ม Xi Yi Zi แสดงว่าถนนเส้นที่ i เชื่อมระหว่างเมือง Xi และ Yi และมีความยาว Zi ( 1 < Xi,Yi < n , Xi != Yi , 1 < Zi < 3000 )
ข้อมูลส่งออก
บรรทัดเดียว ประกอบด้วยจำนวนเต็ม 1 จำนวน แสดงระยะทางระหว่างเมืองหมายเลข 1 กับเมืองที่อยู่ไกลเมืองหมายเลข 1 มากที่สุด
หมายเหตุ มีชุดทดสอบทั้งสิ้น 28 ชุดโดย
4 ชุดทดสอบ n = 11
3 ชุดทดสอบ n = 101
3 ชุดทดสอบ n = 10001
5 ชุดทดสอบ n = 30001
4 ชุดทดสอบ n = 50001
9 ชุดทดสอบ n = 100001
3 ชุดทดสอบ n = 101
3 ชุดทดสอบ n = 10001
5 ชุดทดสอบ n = 30001
4 ชุดทดสอบ n = 50001
9 ชุดทดสอบ n = 100001
โจทย์โดย : สรวิทย์ สุริยกาญจน์ ( PS.int )
ที่มา : ศูนย์ สอวน. โรงเรียนมหิดลวิทยานุสรณ์
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
11 1 2 1427 1 3 741 1 4 1763 1 5 2491 1 6 1849 2 7 1219 3 8 1100 4 9 1071 3 10 1587 2 11 1418 | 2845 |
11 1 2 2445 2 3 1474 3 4 2493 4 5 1596 5 6 605 6 7 1531 7 8 1462 8 9 1389 9 10 1726 10 11 2112 | 16833 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2558
Python Practice : General
โจทย์จาก : http://programming.in.th/task/rev2_problem.php?pid=1092
ชุดข้อมูลทดสอบมูลค่าไม่เกิน 40 คะแนน มีค่า N,M≤1,000 และในทุกชุดข้อมูลทดสอบมีค่า N,M≤100,000
โจทย์โดย: ทักษพร กิตติอัครเสถียร ที่มา: TOI.C:05-2009
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่คือ Code !!
1092 : สงครามของนายพล (general)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
เกมออนไลน์ใหม่เพิ่งเปิดตัวขึ้น ในเกมนี้ ผู้เล่นแต่ละคนจะเล่นเป็นนายพลซึ่งมีหน้าที่คุมทหารจำนวนหนึ่ง
เมื่อเกิดการท้ารบระหว่างผู้เล่นสองคน ผู้เล่นที่ชนะการสู้รบคือผู้เล่นที่มีทหารจำนวนมากกว่า แต่ถ้าหากทั้งสองฝ่ายมีจำนวนทหารเท่ากัน ผู้เล่นที่ชนะคือผู้เล่นที่มีหมายเลขประจำตัวนายพลที่น้อยกว่า
ผู้เล่นที่ชนะ จะได้กำลังพลเพิ่มขึ้น ซึ่งเท่ากับทหารจำนวนครึ่งหนึ่งของฝ่ายที่แพ้ (กรณีที่จำนวนทหารหารด้วยสองไม่ลงตัว ให้ปัดเศษทิ้ง)
ผู้เล่นที่แพ้ จะถูกเปลี่ยนจากสถานะ “นายพล” เป็นสถานะ “เชลย” ของผู้เล่นที่ชนะ นอกจากนี้ผู้เล่นที่เคยตกเป็นเชลยของฝ่ายแพ้ จะกลายเป็นเชลยของฝั่งผู้ชนะในการแข่งขันด้วย
บางครั้งนายพลบางคนก็ขี้ขลาด ไม่ยอมท้ารบกับนายพลด้วยกันเอง แต่กลับไปท้ารบกับเชลยของนายพลคนอื่น ในกรณีเหล่านี้ นายพลของเชลยที่ถูกท้ารบนั้นก็มีหน้าที่ต้องปกป้องเชลยของตน และจะต้องต่อสู้แทนเชลยคนนั้น หรือบางครั้งเชลยก็ทะเลาะกันเอง จนทำให้นายพลของเชลยเหล่านี้ต้องมารบกัน ก็เป็นไปได้เช่นเดียวกัน
คุณเป็นผู้ดูแลระบบเกมออนไลน์นี้ คุณได้รับข้อมูลการปะทะกันระหว่างผู้เล่นแต่ละคู่ หน้าที่ของคุณคือบอกว่าในแต่ละครั้ง ผู้เล่นฝั่งใดเป็นฝ่ายชนะ
งานของคุณ
คุณมีไฟล์ประวัติว่า ในช่วงหนึ่งอาทิตย์ที่ผ่านมา มีใครท้ารบกับใครบ้าง หน้าที่ของคุณคือคำนวณว่า ในการสู้รบแต่ละครั้ง นายพลคนไหนเป็นผู้ชนะ เนื่องจากอาจมีการท้ารบระหว่างเชลยหลายคนที่อยู่ใต้การควบคุมของนายพลคน เดียวกันได้ ในกรณีนี้ให้ตอบ -1
ข้อมูลนำเข้า
บรรทัดแรกมีจำนวนเต็มสองจำนวน N, M แทนจำนวนนายพลและจำนวนครั้งในการรบ (1≤N,M≤100,000)
อีก N บรรทัดถัดมาบอกข้อมูลของจำนวนทหารของผู้เล่นแต่ละคนในตอนเริ่มต้น โดยในบรรทัดที่ i+1 มีจำนวนเต็มหนึ่งตัว แสดงจำนวนทหารที่นายพลหมายเลข i มี ผู้เล่นแต่ละคนมีทหารจำนวนไม่เกิน 10,000 นายในตอนเริ่มต้น
อีก M บรรทัด มีจำนวนเต็มบรรทัดละสองตัวคือ a,b แสดงว่า a และ b ท้ารบกัน (1≤a,b≤N และ a≠b)
ข้อมูลส่งออก
มี M บรรทัด แต่ละบรรทัดบอกหมายเลขประจำตัวนายพลของฝั่งผู้ชนะของการรบแต่ละครั้ง ถ้าไม่มีการรบเกิดขึ้น (คนที่ท้ารบกันเป็นเชลยของนายพลคนเดียวกัน) ให้พิมพ์ -1
การให้คะแนนเมื่อเกิดการท้ารบระหว่างผู้เล่นสองคน ผู้เล่นที่ชนะการสู้รบคือผู้เล่นที่มีทหารจำนวนมากกว่า แต่ถ้าหากทั้งสองฝ่ายมีจำนวนทหารเท่ากัน ผู้เล่นที่ชนะคือผู้เล่นที่มีหมายเลขประจำตัวนายพลที่น้อยกว่า
ผู้เล่นที่ชนะ จะได้กำลังพลเพิ่มขึ้น ซึ่งเท่ากับทหารจำนวนครึ่งหนึ่งของฝ่ายที่แพ้ (กรณีที่จำนวนทหารหารด้วยสองไม่ลงตัว ให้ปัดเศษทิ้ง)
ผู้เล่นที่แพ้ จะถูกเปลี่ยนจากสถานะ “นายพล” เป็นสถานะ “เชลย” ของผู้เล่นที่ชนะ นอกจากนี้ผู้เล่นที่เคยตกเป็นเชลยของฝ่ายแพ้ จะกลายเป็นเชลยของฝั่งผู้ชนะในการแข่งขันด้วย
บางครั้งนายพลบางคนก็ขี้ขลาด ไม่ยอมท้ารบกับนายพลด้วยกันเอง แต่กลับไปท้ารบกับเชลยของนายพลคนอื่น ในกรณีเหล่านี้ นายพลของเชลยที่ถูกท้ารบนั้นก็มีหน้าที่ต้องปกป้องเชลยของตน และจะต้องต่อสู้แทนเชลยคนนั้น หรือบางครั้งเชลยก็ทะเลาะกันเอง จนทำให้นายพลของเชลยเหล่านี้ต้องมารบกัน ก็เป็นไปได้เช่นเดียวกัน
คุณเป็นผู้ดูแลระบบเกมออนไลน์นี้ คุณได้รับข้อมูลการปะทะกันระหว่างผู้เล่นแต่ละคู่ หน้าที่ของคุณคือบอกว่าในแต่ละครั้ง ผู้เล่นฝั่งใดเป็นฝ่ายชนะ
งานของคุณ
คุณมีไฟล์ประวัติว่า ในช่วงหนึ่งอาทิตย์ที่ผ่านมา มีใครท้ารบกับใครบ้าง หน้าที่ของคุณคือคำนวณว่า ในการสู้รบแต่ละครั้ง นายพลคนไหนเป็นผู้ชนะ เนื่องจากอาจมีการท้ารบระหว่างเชลยหลายคนที่อยู่ใต้การควบคุมของนายพลคน เดียวกันได้ ในกรณีนี้ให้ตอบ -1
ข้อมูลนำเข้า
บรรทัดแรกมีจำนวนเต็มสองจำนวน N, M แทนจำนวนนายพลและจำนวนครั้งในการรบ (1≤N,M≤100,000)
อีก N บรรทัดถัดมาบอกข้อมูลของจำนวนทหารของผู้เล่นแต่ละคนในตอนเริ่มต้น โดยในบรรทัดที่ i+1 มีจำนวนเต็มหนึ่งตัว แสดงจำนวนทหารที่นายพลหมายเลข i มี ผู้เล่นแต่ละคนมีทหารจำนวนไม่เกิน 10,000 นายในตอนเริ่มต้น
อีก M บรรทัด มีจำนวนเต็มบรรทัดละสองตัวคือ a,b แสดงว่า a และ b ท้ารบกัน (1≤a,b≤N และ a≠b)
ข้อมูลส่งออก
มี M บรรทัด แต่ละบรรทัดบอกหมายเลขประจำตัวนายพลของฝั่งผู้ชนะของการรบแต่ละครั้ง ถ้าไม่มีการรบเกิดขึ้น (คนที่ท้ารบกันเป็นเชลยของนายพลคนเดียวกัน) ให้พิมพ์ -1
ชุดข้อมูลทดสอบมูลค่าไม่เกิน 40 คะแนน มีค่า N,M≤1,000 และในทุกชุดข้อมูลทดสอบมีค่า N,M≤100,000
โจทย์โดย: ทักษพร กิตติอัครเสถียร ที่มา: TOI.C:05-2009
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
5 4 3 4 5 6 7 1 5 1 2 1 2 3 4 | 5 5 -1 4 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่คือ Code !!
Python Practice : DNA
โจทย์จาก : http://programming.in.th/task/rev2_problem.php?pid=1019
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่ คือ Code
1019 : DNA
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
ดีเอ็นเอ (Deoxyribonucleic acid)
คือ สารพันธุกรรมที่สามารถนำมาใช้เป็นเอกลักษณ์ของสิ่งมีชีวิต
โดยดีเอ็นเอนี้เมื่อผ่านการถอดความหมายมาจากสารพันธุกรรมใดๆแล้วจะถูกนำมา
เก็บในลักษณะของสายอักขระ โดยตัวอักขระนั้นจะมีเพียงแค่สี่ตัวเท่านั้น
นั่นคือ A C G และ T
ในการวิเคราะห์ดีเอ็นเอของคุณหญิงหมอ มักประสบปัญหาที่ข้อมูลที่ต้องการเปรียบเทียบแม้ว่าสิ่งมีชีวิตชนิดเดียวกัน แต่ตำแหน่งเริ่มต้นไม่ตรงกันทำให้ยากที่จะเปรียบเทียบกันได้ ตัวอย่างเช่น สารชนิดแรกได้ผลมาเป็น AAAACTGCTACCGGT และชิ้นที่สองคือ CTGAATCTACTGCTATTGCAA หากสังเกตให้ดีจะเห็นได้ว่าส่วนที่เหมือนกันที่มีความยาวต่อเนื่องมากที่สุด คือ ACTGCTA
ข้อมูลที่ซ้ำและยาวที่สุดอาจมีได้หลายชุด หน้าที่ของเราคือเขียนโปรแกรมเพื่อช่วยคุณหญิงหมอหาส่วนที่เหมือนกันอย่าง ต่อเนื่องของดีเอ็นเอจำนวน 2 สาย
ข้อมูลนำเข้า
บรรทัดแรกและบรรทัดที่สอง แต่ละบรรทัดเก็บข้อมูลของดีเอ็นเอแต่ละสาย โดยแต่ละสายจะประกอบด้วยอักขระ ‘A’ ‘C’ ‘G’ ‘T’ เท่านั้น โดยความยาวของแต่ละสายเป็น L โดยที่ 1 < L < 200
ข้อมูลส่งออก
บรรทัดแรก เป็นแสดง ส่วนที่เหมือนกันที่ยาวที่สุด ของดีเอ็นเอทั้งสองสาย ถ้ามีส่วนที่ยาวที่สุดมากกว่าหนึ่งคำตอบให้เลือกตอบส่วนที่ยาวที่สุดสายแรก ที่พบ
("สายแรก" หมายถึง สายย่อยที่อยู่ซ้ายที่สุดของดีเอ็นเอสายแรก)
ที่มา: การแข่งขันคณิตศาสตร์ วิทยาศาสตร์ โอลิมปิกแห่งประเทศไทย สาขาวิชาคอมพิวเตอร์ ประจำปี 2547
ในการวิเคราะห์ดีเอ็นเอของคุณหญิงหมอ มักประสบปัญหาที่ข้อมูลที่ต้องการเปรียบเทียบแม้ว่าสิ่งมีชีวิตชนิดเดียวกัน แต่ตำแหน่งเริ่มต้นไม่ตรงกันทำให้ยากที่จะเปรียบเทียบกันได้ ตัวอย่างเช่น สารชนิดแรกได้ผลมาเป็น AAAACTGCTACCGGT และชิ้นที่สองคือ CTGAATCTACTGCTATTGCAA หากสังเกตให้ดีจะเห็นได้ว่าส่วนที่เหมือนกันที่มีความยาวต่อเนื่องมากที่สุด คือ ACTGCTA
ข้อมูลที่ซ้ำและยาวที่สุดอาจมีได้หลายชุด หน้าที่ของเราคือเขียนโปรแกรมเพื่อช่วยคุณหญิงหมอหาส่วนที่เหมือนกันอย่าง ต่อเนื่องของดีเอ็นเอจำนวน 2 สาย
ข้อมูลนำเข้า
บรรทัดแรกและบรรทัดที่สอง แต่ละบรรทัดเก็บข้อมูลของดีเอ็นเอแต่ละสาย โดยแต่ละสายจะประกอบด้วยอักขระ ‘A’ ‘C’ ‘G’ ‘T’ เท่านั้น โดยความยาวของแต่ละสายเป็น L โดยที่ 1 < L < 200
ข้อมูลส่งออก
บรรทัดแรก เป็นแสดง ส่วนที่เหมือนกันที่ยาวที่สุด ของดีเอ็นเอทั้งสองสาย ถ้ามีส่วนที่ยาวที่สุดมากกว่าหนึ่งคำตอบให้เลือกตอบส่วนที่ยาวที่สุดสายแรก ที่พบ
("สายแรก" หมายถึง สายย่อยที่อยู่ซ้ายที่สุดของดีเอ็นเอสายแรก)
ที่มา: การแข่งขันคณิตศาสตร์ วิทยาศาสตร์ โอลิมปิกแห่งประเทศไทย สาขาวิชาคอมพิวเตอร์ ประจำปี 2547
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
AAAACTGCTACCGGT CTGAATCTACTGCTATTGCAA | ACTGCTA |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่ คือ Code
Task : Python Plug-in for Netbeans (Update 31/08/58)
หลังจากที่คราวก่อน ผม Install Netbeans 7.0 จาก Ubuntu Software Center ไป แล้วมันลง Python Plug-in ไม่ได้ ผมจึง Uninstall แล้วโหลด Netbeans 8.0.2 พร้อม JDK 8 มาจากเว็บไซต์นี้ http://www.oracle.com/technetwork/articles/javase/jdk-netbeans-jsp-142931.html
หลังจากนั้น ผมก็ Install ด้วยวิธีจากเว็บไซต์นี้ http://ubuntuhandbook.org/index.php/2014/03/install-netbeans-ide-8-0-in-ubuntu-14-0413-1012-04/
และแล้ว ผมก็ Install เสร็จ
จากนั้นผมก็ลง Python plugin จากเว็บนี้ https://blogs.oracle.com/geertjan/entry/python_in_netbeans_ide_81
เรียบร้อย :D
หลังจากนั้น ผมก็ Install ด้วยวิธีจากเว็บไซต์นี้ http://ubuntuhandbook.org/index.php/2014/03/install-netbeans-ide-8-0-in-ubuntu-14-0413-1012-04/
และแล้ว ผมก็ Install เสร็จ
จากนั้นผมก็ลง Python plugin จากเว็บนี้ https://blogs.oracle.com/geertjan/entry/python_in_netbeans_ide_81
เรียบร้อย :D
วันพุธที่ 26 สิงหาคม พ.ศ. 2558
Task : Python Plug-in for NetBeans
ก่อนอื่นเลย ผมก็ได้หา NetBeans ใน Ubuntu Software Center ดู ก็เจอเป็น Version 7.0.1 ผมจึงทำการ Install เรียบร้อย (แอบไปส่องของ Windows มา เป็น Version 8.0.x แล้ว
และนี่คือหน้าตาโปรแกรม NetBeans
จากนั้น ผมก็เลยลองไปหาวิธีลง Plug-in Python3 ใน NetBeans มา ก็เจอกับคลิปนี้
ผมจึงลองทำตามดู
เลือก Tool > Options แล้วเลือกแถบ Setting
กด Add แล้วใส่ข้อมูลดังนี้
- Name : Python
- URL : http://deadlock.netbeans.org/hudson/job/
nbms-and-javadoc/lastStableBuild/artifac t/nbbuild/nbms/updates.xml.gz
จากนั้นกด Ok
แต่ผลปรากฏว่า...
ERROR !!
ประมาณว่ามีปัญหากับ Proxy แต่ก็ลองแก้แล้ว ก็ยังมีปัญหาอยู่
สุดท้ายจึงกลับไปใช้ IDLE ตามเดิมก่อน
และนี่คือหน้าตาโปรแกรม NetBeans
จากนั้น ผมก็เลยลองไปหาวิธีลง Plug-in Python3 ใน NetBeans มา ก็เจอกับคลิปนี้
ผมจึงลองทำตามดู
เลือก Tool > Options แล้วเลือกแถบ Setting
กด Add แล้วใส่ข้อมูลดังนี้
- Name : Python
- URL : http://deadlock.netbeans.org/hudson/job/
แต่ผลปรากฏว่า...
ERROR !!
ประมาณว่ามีปัญหากับ Proxy แต่ก็ลองแก้แล้ว ก็ยังมีปัญหาอยู่
สุดท้ายจึงกลับไปใช้ IDLE ตามเดิมก่อน
Python Practice : World cup
โจทย์จาก http://programming.in.th/task/rev2_problem.php?pid=0028
งานของคุณ
จงเขียนโปรแกรมเพื่อรับผลการแข่งขันของทีมในกลุ่มหนึ่ง และคำนวณหาคะแนนและอันดับในกลุ่มของแต่ละทีม
ข้อมูลนำเข้า
ใน 4 บรรทัดแรก บรรทัดที่ i (1 ≤ i ≤ 4) จะระบุชื่อทีมที่ i ซึ่งเป็นสตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่หรือพิมพ์เล็ก เท่านั้น (ไม่มีเว้นวรรค) และจะมีความยาวไม่เกิน 20 ตัวอักษร
ในบรรทัดที่ 5 ถึงบรรทัดที่ 8 จะระบุจำนวนเต็มบรรทัดละ 4 ตัว โดยจำนวนเต็มตัวที่ j (1 ≤ j ≤ 4) ในบรรทัดที่ i+4 (1 ≤ i ≤ 4) จะแสดงถึงจำนวนประตูที่ทีมที่ i ยิงได้ ในนัดที่แข่งขันกับทีมที่ j ยกเว้นในกรณีที่ i = j จำนวนเต็มดังกล่าวจะมีค่าเป็นศูนย์เสมอ
การแข่งขันแต่ละนัดจะมีการยิงประตูเกิดขึ้นไม่เกิน 10 ประตู และรับประกันว่าจะไม่มีสองทีมใดที่เท่ากันหมดในเกณฑ์การจัดอันดับทั้ง 3 ข้อ
ข้อมูลส่งออก
มี 4 บรรทัด โดยในบรรทัดที่ i (1 ≤ i ≤ 4) แสดงชื่อทีมที่ได้อันดับที่ i ของกลุ่ม ตามด้วยคะแนนของทีมดังกล่าว
การให้คะแนน
40% ของข้อมูลทดสอบ จะไม่มีสองทีมใดที่ได้คะแนนเท่ากันเลย
ที่มา การแข่งขัน IOI Thailand League เดือนกรกฏาคม 2553 โจทย์โดย: สุธี เรืองวิเศษ
Coding
#func for get TeamName
def getTeamNameList(total_team) :
team_name_arrayList = ["" for x in range(total_team)]
for currentTeam in range(total_team) :
print("Team",currentTeam+1,end=" = ")
#list.append(input(""))
team_name_arrayList[currentTeam] = input("")
return team_name_arrayList
#func for get Score for each Team
def getTeamScore(total_team) :
team_score = [[0 for x in range(total_team)] for x in range(total_team)]
for currentTeam in range(total_team) : #get score for each team
print("Score Team",currentTeam+1,end=" = ")
scoreList = input("").split()
for vsTeam in range(total_team) :
if currentTeam==vsTeam :
team_score[currentTeam][vsTeam] = 0
else :
team_score[currentTeam][vsTeam] = int(scoreList[vsTeam])
return team_score
#func for get Point for each Team
def getTeamPoint(team_score,total_team) :
team_point = [[0 for x in range(total_team)] for x in range(total_team)]
for currentTeam in range(total_team) :
team_point[currentTeam][currentTeam] = 0
for counter in range(1,total_team) :
vsTeam = currentTeam + counter #team+1,+2,+3,+.. but not more than total_team
if vsTeam >= total_team :
vsTeam = vsTeam % total_team
team_point[currentTeam][vsTeam] = calPoint(team_score[currentTeam][vsTeam],team_score[vsTeam][currentTeam])
return team_point
#func for calcualte Point
def calPoint(currentTeamScore,vsTeamScore) :
if currentTeamScore > vsTeamScore :
return 3
elif currentTeamScore == vsTeamScore :
return 1
else :
return 0
#func for sort team by point , score
def sortAndPrintTeam(total_team,teamName,score,point) :
totalPoint = calTotalPoint(total_team,point)
totalGoal = calTotalGoal(total_team,score)
totalGoalLost = calTotalGoalLost(total_team,score)
totalGoalDiff = calGoalDiff(totalTeam,totalGoal,totalGoalLost)
#sorting
for i in range(total_team) :
for j in range(i+1,total_team) :
if (totalPoint[i]<totalPoint[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
elif (totalPoint[i]==totalPoint[j]) and (totalGoal[i]<totalGoal[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
elif (totalGoal[i]==totalGoal[j]) and (totalGoalDiff[i]<totalGoalDiff[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
#showing
for currentTeam in range(total_team) :
print(teamName[currentTeam]," ",totalPoint[currentTeam])
def calTotalPoint(total_team,point) :
total_point = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team) :
total_point[currentTeam] = total_point[currentTeam] + point[currentTeam][vsTeam]
return total_point
def calTotalGoal(total_team,score) :
total_goal = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team) :
total_goal[currentTeam] = total_goal[currentTeam] + score[currentTeam][vsTeam]
return total_goal
def calTotalGoalLost(total_team,score) :
total_lost = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team):
total_lost[currentTeam] = total_lost[currentTeam] + score[vsTeam][currentTeam]
return total_lost
def calGoalDiff(total_team,goal,lost) :
diff = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
diff[currentTeam] = goal[currentTeam] - lost[currentTeam]
return diff
totalTeam = 4 #number of total team
teamNameList = getTeamNameList(totalTeam) #ArrayList for keep team
teamScore = getTeamScore(totalTeam) #array keep score [teamNumber][vsTeamNumber]
teamPoint = getTeamPoint(teamScore,totalTeam) #calculate score to point for each Team
sortAndPrintTeam(totalTeam,teamNameList,teamScore,teamPoint)
0028 : ฟุตบอลโลก (worldcup)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
ใน
การแข่งขันฟุตบอลโลก 2010 ที่ประเทศแอฟริกาใต้
มีทีมที่เข้าร่วมแข่งขันทั้งหมด 32 ทีม การแข่งขันในรอบแรกจะแบ่งออกเป็น 8
กลุ่ม กลุ่มละ 4 ทีม ทีมในแต่ละกลุ่มจะทำการแข่งขันแบบพบกันหมด
โดยในการแข่งขันแต่ละนัด ทีมที่ชนะจะได้ 3 คะแนน ทีมที่แพ้จะไม่ได้คะแนน
แต่ถ้าเสมอกันก็จะได้คะแนนทีมละ 1 คะแนน หลังจากแข่งขันจบ ทีมที่ได้อันดับ 1
และอันดับ 2 ของแต่ละกลุ่ม จะได้ผ่านเข้าสู่รอบต่อไป
ซึ่งการจัดอันดับทีมในแต่ละกลุ่มจะพิจารณาจากเกณฑ์ดังนี้Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
- ดูจากคะแนนที่ได้ ทีมใดได้คะแนนมากกว่าจะอยู่ในอันดับที่ดีกว่า
- หากเกณฑ์ในข้อ 1 ยังเท่ากัน ให้ดูจากจำนวนประตูที่ยิงได้ลบด้วยจำนวนประตูที่ถูกยิง ทีมใดได้มากกว่าก็จะอยู่ในอันดับที่ดีกว่า
- หากเกณฑ์ในข้อ 2 ยังเท่ากัน ดูจากจำนวนประตูที่ยิงได้ ทีมใดได้มากกว่าก็จะอยู่ในอันดับที่ดีกว่า
งานของคุณ
จงเขียนโปรแกรมเพื่อรับผลการแข่งขันของทีมในกลุ่มหนึ่ง และคำนวณหาคะแนนและอันดับในกลุ่มของแต่ละทีม
ข้อมูลนำเข้า
ใน 4 บรรทัดแรก บรรทัดที่ i (1 ≤ i ≤ 4) จะระบุชื่อทีมที่ i ซึ่งเป็นสตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่หรือพิมพ์เล็ก เท่านั้น (ไม่มีเว้นวรรค) และจะมีความยาวไม่เกิน 20 ตัวอักษร
ในบรรทัดที่ 5 ถึงบรรทัดที่ 8 จะระบุจำนวนเต็มบรรทัดละ 4 ตัว โดยจำนวนเต็มตัวที่ j (1 ≤ j ≤ 4) ในบรรทัดที่ i+4 (1 ≤ i ≤ 4) จะแสดงถึงจำนวนประตูที่ทีมที่ i ยิงได้ ในนัดที่แข่งขันกับทีมที่ j ยกเว้นในกรณีที่ i = j จำนวนเต็มดังกล่าวจะมีค่าเป็นศูนย์เสมอ
การแข่งขันแต่ละนัดจะมีการยิงประตูเกิดขึ้นไม่เกิน 10 ประตู และรับประกันว่าจะไม่มีสองทีมใดที่เท่ากันหมดในเกณฑ์การจัดอันดับทั้ง 3 ข้อ
ข้อมูลส่งออก
มี 4 บรรทัด โดยในบรรทัดที่ i (1 ≤ i ≤ 4) แสดงชื่อทีมที่ได้อันดับที่ i ของกลุ่ม ตามด้วยคะแนนของทีมดังกล่าว
การให้คะแนน
40% ของข้อมูลทดสอบ จะไม่มีสองทีมใดที่ได้คะแนนเท่ากันเลย
ที่มา การแข่งขัน IOI Thailand League เดือนกรกฏาคม 2553 โจทย์โดย: สุธี เรืองวิเศษ
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
Denmark Netherlands Cameroon Japan 0 0 2 1 2 0 2 1 1 1 0 0 3 0 1 0 | Netherlands 9 Japan 6 Denmark 3 Cameroon 0 |
Germany Serbia Australia Ghana 0 0 4 1 1 0 1 0 0 2 0 1 0 1 1 0 | Germany 6 Ghana 4 Australia 4 Serbia 3 |
Coding
#func for get TeamName
def getTeamNameList(total_team) :
team_name_arrayList = ["" for x in range(total_team)]
for currentTeam in range(total_team) :
print("Team",currentTeam+1,end=" = ")
#list.append(input(""))
team_name_arrayList[currentTeam] = input("")
return team_name_arrayList
#func for get Score for each Team
def getTeamScore(total_team) :
team_score = [[0 for x in range(total_team)] for x in range(total_team)]
for currentTeam in range(total_team) : #get score for each team
print("Score Team",currentTeam+1,end=" = ")
scoreList = input("").split()
for vsTeam in range(total_team) :
if currentTeam==vsTeam :
team_score[currentTeam][vsTeam] = 0
else :
team_score[currentTeam][vsTeam] = int(scoreList[vsTeam])
return team_score
#func for get Point for each Team
def getTeamPoint(team_score,total_team) :
team_point = [[0 for x in range(total_team)] for x in range(total_team)]
for currentTeam in range(total_team) :
team_point[currentTeam][currentTeam] = 0
for counter in range(1,total_team) :
vsTeam = currentTeam + counter #team+1,+2,+3,+.. but not more than total_team
if vsTeam >= total_team :
vsTeam = vsTeam % total_team
team_point[currentTeam][vsTeam] = calPoint(team_score[currentTeam][vsTeam],team_score[vsTeam][currentTeam])
return team_point
#func for calcualte Point
def calPoint(currentTeamScore,vsTeamScore) :
if currentTeamScore > vsTeamScore :
return 3
elif currentTeamScore == vsTeamScore :
return 1
else :
return 0
#func for sort team by point , score
def sortAndPrintTeam(total_team,teamName,score,point) :
totalPoint = calTotalPoint(total_team,point)
totalGoal = calTotalGoal(total_team,score)
totalGoalLost = calTotalGoalLost(total_team,score)
totalGoalDiff = calGoalDiff(totalTeam,totalGoal,totalGoalLost)
#sorting
for i in range(total_team) :
for j in range(i+1,total_team) :
if (totalPoint[i]<totalPoint[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
elif (totalPoint[i]==totalPoint[j]) and (totalGoal[i]<totalGoal[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
elif (totalGoal[i]==totalGoal[j]) and (totalGoalDiff[i]<totalGoalDiff[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
#showing
for currentTeam in range(total_team) :
print(teamName[currentTeam]," ",totalPoint[currentTeam])
def calTotalPoint(total_team,point) :
total_point = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team) :
total_point[currentTeam] = total_point[currentTeam] + point[currentTeam][vsTeam]
return total_point
def calTotalGoal(total_team,score) :
total_goal = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team) :
total_goal[currentTeam] = total_goal[currentTeam] + score[currentTeam][vsTeam]
return total_goal
def calTotalGoalLost(total_team,score) :
total_lost = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team):
total_lost[currentTeam] = total_lost[currentTeam] + score[vsTeam][currentTeam]
return total_lost
def calGoalDiff(total_team,goal,lost) :
diff = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
diff[currentTeam] = goal[currentTeam] - lost[currentTeam]
return diff
totalTeam = 4 #number of total team
teamNameList = getTeamNameList(totalTeam) #ArrayList for keep team
teamScore = getTeamScore(totalTeam) #array keep score [teamNumber][vsTeamNumber]
teamPoint = getTeamPoint(teamScore,totalTeam) #calculate score to point for each Team
sortAndPrintTeam(totalTeam,teamNameList,teamScore,teamPoint)
วันจันทร์ที่ 24 สิงหาคม พ.ศ. 2558
Python Practice : Grade Calculation Program
มาเริ่มศึกษา Python จากการทำโจทย์กันเลยดีกว่า
โจทย์จาก http://programming.in.th/task/rev2_problem.php?pid=0001
โจทย์
ให้นักเรียนเขียนโปรแกรมตัดเกรดเพื่อช่วยงานทะเบียนวัดผลของโรงเรียนแห่งนี้
ข้อมูลนำเข้า
บรรทัดแรก จำนวนเต็มบวก a (0 <= a <= 30) เป็นคะแนนเก็บของนักเรียน
บรรทัดที่สอง จำนวนเต็มบวก b (0 <= b <= 30) เป็นคะแนนสอบกลางภาคของนักเรียน
บรรทัดที่สาม จำนวนเต็มบวก c (0 <= c <= 40) เป็นคะแนนสอบปลายภาคของนักเรียน
ข้อมูลส่งออก
บรรทัดแรก เป็นอักขระใช้แทนเกรดของนักเรียน โดยที่ใช้อักขระตามเงื่อนไขดังต่อไปนี้
print "Grade Calculation Program"
work = input("Work score = ") #first input
while (work < 0) or (work > 30) : #check outrange
print "Error please reinput"
work = input("Work score = ")
mid = input("Midterm score = ") #first input
while (mid < 0) or (mid > 30) : #check outrange
print "Error Please Reinput"
mid = input("Mideterm score = ")
final = input("Final score = ") #first input
while (final<0) or (final>45) : #check outrange
print "Error Please Reinput"
final = input("Final score = ")
total = work + mid + final
#grade calculation
if total >= 80 :
grade = "A"
elif total >= 75 :
grade = "B+"
elif total >= 70 :
grade = "B"
elif total >= 65 :
grade = "C+"
elif total >= 60 :
grade = "C"
elif total >= 55 :
grade = "D+"
elif total >= 50 :
grade = "D"
else :
grade = "F"
#display output
print "Your grade =",grade
และนี่คือ Output ที่แสดงออกมา
Grade Calculation Program
Work score = 31
Error please reinput
Work score = 25
Midterm score = 30
Final score = 35
Your grade = A
โจทย์จาก http://programming.in.th/task/rev2_problem.php?pid=0001
ในการเรียนวิชาคอมพิวเตอร์ ณ โรงเรียนแห่งหนึ่ง ใช้วิธีการเก็บคะแนนในรูปแบบของ
- คะแนนเก็บ 30 คะแนน
- คะแนนสอบกลางภาค 30 คะแนน
- คะแนนสอบปลายภาค 40 คะแนน
โจทย์
ให้นักเรียนเขียนโปรแกรมตัดเกรดเพื่อช่วยงานทะเบียนวัดผลของโรงเรียนแห่งนี้
ข้อมูลนำเข้า
บรรทัดแรก จำนวนเต็มบวก a (0 <= a <= 30) เป็นคะแนนเก็บของนักเรียน
บรรทัดที่สอง จำนวนเต็มบวก b (0 <= b <= 30) เป็นคะแนนสอบกลางภาคของนักเรียน
บรรทัดที่สาม จำนวนเต็มบวก c (0 <= c <= 40) เป็นคะแนนสอบปลายภาคของนักเรียน
ข้อมูลส่งออก
บรรทัดแรก เป็นอักขระใช้แทนเกรดของนักเรียน โดยที่ใช้อักขระตามเงื่อนไขดังต่อไปนี้
- A ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 80 - 100
- B+ ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 75 - 79
- B ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 70 - 74
- C+ ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 65 - 69
- C ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 60 - 64
- D+ ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 55 - 59
- D ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 50 - 54
- F ถ้าคะแนนรวมของนักเรียนอยู่ในช่วง 0 - 49
print "Grade Calculation Program"
work = input("Work score = ") #first input
while (work < 0) or (work > 30) : #check outrange
print "Error please reinput"
work = input("Work score = ")
mid = input("Midterm score = ") #first input
while (mid < 0) or (mid > 30) : #check outrange
print "Error Please Reinput"
mid = input("Mideterm score = ")
final = input("Final score = ") #first input
while (final<0) or (final>45) : #check outrange
print "Error Please Reinput"
final = input("Final score = ")
total = work + mid + final
#grade calculation
if total >= 80 :
grade = "A"
elif total >= 75 :
grade = "B+"
elif total >= 70 :
grade = "B"
elif total >= 65 :
grade = "C+"
elif total >= 60 :
grade = "C"
elif total >= 55 :
grade = "D+"
elif total >= 50 :
grade = "D"
else :
grade = "F"
#display output
print "Your grade =",grade
และนี่คือ Output ที่แสดงออกมา
Grade Calculation Program
Work score = 31
Error please reinput
Work score = 25
Midterm score = 30
Final score = 35
Your grade = A
Python : Starting with Python
ก่อนเราจะเริ่มทำอะไรซักอย่าง ถ้าเราไม่ทราบถึงข้อดีและข้อเสียของสิ่งที่เราจะทำ เราก็จะไม่สามารถใช้งานมันได้ถึงประสิทธิภาพสูงสุด ผมจึงไล่อ่านจากหลายๆ Website ดังนี้
http://pythonthaidev.blogspot.com/2012/01/python.html
http://www.ayarafun.com/2009/08/basic-python-programming-part1/
http://python.cmsthailand.com/basic_python.html
ผมจึงสรุปมาได้ดังนี้
ข้อดี
- ง่ายต่อการศึกษา เนื่องจากมี Syntax ที่ง่าย
- พัฒนาโปรแกรมได้ไว เนื่องจากมี Syntax ที่ง่าย
- Cross platform สามารถรันได้ในหลากหลาย OS
- เป็นภาษา Script จึงทำให้ไม่ต้องเสียเวลา Compile เนื่องจากมี Interpreter แปลงคำสั่งแทน
- เป็น Open Source License จึงไม่เสียค่าลิขสิทธิ์ในการนำไปใช้งาน
- เป็น Server-side script ทำให้มีความปลอดภัยสูง
- ใช้พัฒนา Web Service ได้
ข้อเสีย
- ทำงานช้า เนื่องจากมี Interpreter ทำให้ต้องแปลงคำสั่งทีละบรรทัด
- เกิด Runtime error ได้ง่าย เนื่องจากไม่มีการ Compile
หลังจากรู้ข้อดีข้อเสียกันแล้ว เรามาเริ่มกันเลย
ผมจึงเปิด Ubuntu Software Center ขึ้นมา แล้วก็ search ไปว่า "Python IDE"
ผมจึงเลือกลง IDLE ที่ใช้ Python 2.7
นี่คือหน้าตาของโปรแกรม
http://pythonthaidev.blogspot.com/2012/01/python.html
http://www.ayarafun.com/2009/08/basic-python-programming-part1/
http://python.cmsthailand.com/basic_python.html
ผมจึงสรุปมาได้ดังนี้
ข้อดี
- ง่ายต่อการศึกษา เนื่องจากมี Syntax ที่ง่าย
- พัฒนาโปรแกรมได้ไว เนื่องจากมี Syntax ที่ง่าย
- Cross platform สามารถรันได้ในหลากหลาย OS
- เป็นภาษา Script จึงทำให้ไม่ต้องเสียเวลา Compile เนื่องจากมี Interpreter แปลงคำสั่งแทน
- เป็น Open Source License จึงไม่เสียค่าลิขสิทธิ์ในการนำไปใช้งาน
- เป็น Server-side script ทำให้มีความปลอดภัยสูง
- ใช้พัฒนา Web Service ได้
ข้อเสีย
- ทำงานช้า เนื่องจากมี Interpreter ทำให้ต้องแปลงคำสั่งทีละบรรทัด
- เกิด Runtime error ได้ง่าย เนื่องจากไม่มีการ Compile
หลังจากรู้ข้อดีข้อเสียกันแล้ว เรามาเริ่มกันเลย
ผมจึงเปิด Ubuntu Software Center ขึ้นมา แล้วก็ search ไปว่า "Python IDE"
ผมจึงเลือกลง IDLE ที่ใช้ Python 2.7
นี่คือหน้าตาของโปรแกรม
Ubuntu's Problem : Slow Internet
หลังจากใช้ Ubuntu มาได้สักพัก ก็เริ่มรู้สึกได้ ว่าทำไม Internet ช้าจัง เลยลอง Search google ดู
จนมาเจอกับ link นี้ https://rafaiel.wordpress.com/2011/09/03/แก้ปัญหา-internet-ช้า-บน-ubuntu/
ในเว็บ ได้บอกวิธีแก้ไขไว้ว่า ให้เปิด Terminal ขึ้นมา แล้วพิมตามนี้
เมื่อทำแล้ว ก็จะได้หน้าตาแบบนี้
และแล้ว ก็สามารถแก้ปัญหา Internet ช้าได้แล้ว :D
จนมาเจอกับ link นี้ https://rafaiel.wordpress.com/2011/09/03/แก้ปัญหา-internet-ช้า-บน-ubuntu/
ในเว็บ ได้บอกวิธีแก้ไขไว้ว่า ให้เปิด Terminal ขึ้นมา แล้วพิมตามนี้
sudo apt-get install ethtool
sudo ethtool -s eth0 speed 100 duplex full autoneg on
เมื่อทำแล้ว ก็จะได้หน้าตาแบบนี้
และแล้ว ก็สามารถแก้ปัญหา Internet ช้าได้แล้ว :D
Task : Install Ubuntu (Update 25/08/58)
หลังจากที่ลง Windows เสร็จแล้ว ผมก็ได้โหลดไฟล์ .iso ที่ใช้สำหรับ Install Ubuntu จากเว็บ http://www.ubuntu.com/download/desktop
หลังจากกด Download ก็จะมาถึงหน้าต่างถัดมา ที่ตอนแรกผมก็งง
แต่พอดูดีๆแล้ว อ๋อ !! เขาถามความสมัครใจ ว่าต้องการจะบริจาคเท่าไร ตามจิตศรัทธา แน่นอนครับ คนใจบุญแบบผม บริจาคไป 0 ดอลล่าร์ครับ =w=
และแล้วผมก็ Download ได้ ไฟล์ iso สำหรับ Install Ubuntu มา
ผมจึงใช้โปรแกรม Rufus เพื่อ burn ไฟล์ iso ลง Flashdrive
หลังจากนั้น ผมก็ใช้ Flashdrive ที่ผมเตรียมไว้เรียบร้อยไปลง Ubuntu ใน Partition ที่ผมเตรียมไว้จากครั้งที่แล้ว
โดยตอน Install ผมไม่ได้เลือก Install along side windows 8 แต่ผมเลือก Something else เพื่อเลือก Partition ที่ผมเตรียมไว้
นี่คือรูปตัวอย่างตอนลงเล็กน้อย ที่ถ่ายไว้ด้วยกล้องมือถือ
หลังจาก Install เสร็จ ก็จะ Restart เข้า Windows ก่อน เพื่อมา Setting การ Boot ให้สามารถเลือก Boot ได้ว่าจะ Boot Windows หรือ Ubuntu โดยโปรแกรม EasyBCD
เปิดโปรแกรมขึ้นมา กด Add New Entry แล้ว Setting ตามภาพ แล้วกด Add Entry
เพียงเท่านี้ก็เรียบร้อย สามารถจัดการกับการ Boot ได้อย่างง่ายดาย
และในที่สุด เราก็ได้สัมผัสกับ Ubuntu สักที เย้ๆ
หลังจากกด Download ก็จะมาถึงหน้าต่างถัดมา ที่ตอนแรกผมก็งง
แต่พอดูดีๆแล้ว อ๋อ !! เขาถามความสมัครใจ ว่าต้องการจะบริจาคเท่าไร ตามจิตศรัทธา แน่นอนครับ คนใจบุญแบบผม บริจาคไป 0 ดอลล่าร์ครับ =w=
และแล้วผมก็ Download ได้ ไฟล์ iso สำหรับ Install Ubuntu มา
ผมจึงใช้โปรแกรม Rufus เพื่อ burn ไฟล์ iso ลง Flashdrive
หลังจากนั้น ผมก็ใช้ Flashdrive ที่ผมเตรียมไว้เรียบร้อยไปลง Ubuntu ใน Partition ที่ผมเตรียมไว้จากครั้งที่แล้ว
โดยตอน Install ผมไม่ได้เลือก Install along side windows 8 แต่ผมเลือก Something else เพื่อเลือก Partition ที่ผมเตรียมไว้
นี่คือรูปตัวอย่างตอนลงเล็กน้อย ที่ถ่ายไว้ด้วยกล้องมือถือ
หลังจาก Install เสร็จ ก็จะ Restart เข้า Windows ก่อน เพื่อมา Setting การ Boot ให้สามารถเลือก Boot ได้ว่าจะ Boot Windows หรือ Ubuntu โดยโปรแกรม EasyBCD
เปิดโปรแกรมขึ้นมา กด Add New Entry แล้ว Setting ตามภาพ แล้วกด Add Entry
เพียงเท่านี้ก็เรียบร้อย สามารถจัดการกับการ Boot ได้อย่างง่ายดาย
และในที่สุด เราก็ได้สัมผัสกับ Ubuntu สักที เย้ๆ
วันพุธที่ 19 สิงหาคม พ.ศ. 2558
Task : Install Ubuntu (Update 20/08/15)
ได้ลง Windows ใหม่เรียบร้อยแล้ว
โดย Windows ที่ลง เป็น Windows 8.1 Pro ที่ใช้ Serial Key เป็นของ Dreamspark
ซึ่งในขณะลง ก็มีปัญหามากมายเกิดขึ้น
ปัญหา - Flashdrive ที่ใช้สำหรับลง Windows Boot ไม่ติด
จากคราวที่แล้ว ที่ได้นำไฟล์ ISO ของ Windows นำไปใส่ Flashdrive ด้วยโปรแกรม Windows 7 USB/DVD Download Tool แต่ปรากฏว่าไม่สามารถ Boot ติด
ทางแก้ปัญหา - ใช้โปรแกรม Refus แทน เป็นโปรแกรมที่จะทำการ Format Flashdrive และนำไฟล์ ISO มาทำเป็น Bootable USB โดยอัตโนมัติ
ปัญหา - 1GB = ?? MB
ตอน Install Windows ผมได้ Format แล้วแบ่ง Partition ใหม่ แล้วเกิดปัญหาที่ว่า ไม่สามารถแบ่งขนาดของ Partition ได้ตามต้องการ เนื่องจากไม่ทราบว่า 1GB เท่ากับกี่ MB
ทางแก้ปัญหา - เปิด Smartphone search หา จึงทราบว่า 1024MB = 1GB
แต่สุดท้ายแล้วทั้งนี้ทั้งนั้น ก็ยังไม่ได้ Install Ubuntu
โดย Windows ที่ลง เป็น Windows 8.1 Pro ที่ใช้ Serial Key เป็นของ Dreamspark
ซึ่งในขณะลง ก็มีปัญหามากมายเกิดขึ้น
ปัญหา - Flashdrive ที่ใช้สำหรับลง Windows Boot ไม่ติด
จากคราวที่แล้ว ที่ได้นำไฟล์ ISO ของ Windows นำไปใส่ Flashdrive ด้วยโปรแกรม Windows 7 USB/DVD Download Tool แต่ปรากฏว่าไม่สามารถ Boot ติด
ทางแก้ปัญหา - ใช้โปรแกรม Refus แทน เป็นโปรแกรมที่จะทำการ Format Flashdrive และนำไฟล์ ISO มาทำเป็น Bootable USB โดยอัตโนมัติ
ปัญหา - 1GB = ?? MB
ตอน Install Windows ผมได้ Format แล้วแบ่ง Partition ใหม่ แล้วเกิดปัญหาที่ว่า ไม่สามารถแบ่งขนาดของ Partition ได้ตามต้องการ เนื่องจากไม่ทราบว่า 1GB เท่ากับกี่ MB
ทางแก้ปัญหา - เปิด Smartphone search หา จึงทราบว่า 1024MB = 1GB
แต่สุดท้ายแล้วทั้งนี้ทั้งนั้น ก็ยังไม่ได้ Install Ubuntu
วันจันทร์ที่ 17 สิงหาคม พ.ศ. 2558
Task : Install Ubuntu
เนื่องจากปกติ ผมใช้ Windows เป็นหลัก (Windows 8.1) และ PC ที่บ้าน ไม่ได้ใช้แต่เพียงผมคนเดียว และเกมออนไลน์หลายเกมยังไม่รองรับ Linux จึงทำให้ไม่สะดวกในการใช้ Ubuntu แต่เพียงอย่างเดียว
ผมจึงค้นหาวิธีในการที่จะสามารถใช้ได้ทั้ง Windows และ Ubuntu ใน PC เครื่องเดียวกัน
จนผมมาเจอกับบทความนี้ ผมจึงใช้ 2 บทความนี้อ้างอิงประกอบ
การติดตั้ง Ubuntu ร่วมกับ Windows
วิธีการลง Windows7 + Ubuntu 12.04 สำหรับผู้ที่สนใจศึกษา
ไหนๆจะลง Ubuntu แล้ว ก็เลยกะจะขอลง Windows ใหม่อีกสักรอบก่อน เนื่องจากติดไวรัสและเป็น Windows แบบ Crack จึงจะลง Windows 8.1 อีกครั้งนึง เปลี่ยนจากที่เคยใช้ 64-bits อยู่เป็น 32-bits และใช้ Serial key ของ Dreamspark เพื่อใช้ในการ Activate
แต่ผมยังไม่สามารถเริ่มลงได้ในทันที เนื่องจากยังไม่ได้ Backup ข้อมูลก่อน
และนี่คือสองสิ่งที่ผมต้องการจะ Backup
เนื่องจากผมไม่มี External Harddisk ที่จะใช้ในการ Backup ข้อมูลเหล่านี้ ผมจึงหาวิธีในการ Backup โดยการเปิด PC ทิ้งไว้ แล้ว Upload ลง Google Drive

ผมจึงค้นหาวิธีในการที่จะสามารถใช้ได้ทั้ง Windows และ Ubuntu ใน PC เครื่องเดียวกัน
จนผมมาเจอกับบทความนี้ ผมจึงใช้ 2 บทความนี้อ้างอิงประกอบ
การติดตั้ง Ubuntu ร่วมกับ Windows
วิธีการลง Windows7 + Ubuntu 12.04 สำหรับผู้ที่สนใจศึกษา
ไหนๆจะลง Ubuntu แล้ว ก็เลยกะจะขอลง Windows ใหม่อีกสักรอบก่อน เนื่องจากติดไวรัสและเป็น Windows แบบ Crack จึงจะลง Windows 8.1 อีกครั้งนึง เปลี่ยนจากที่เคยใช้ 64-bits อยู่เป็น 32-bits และใช้ Serial key ของ Dreamspark เพื่อใช้ในการ Activate
แต่ผมยังไม่สามารถเริ่มลงได้ในทันที เนื่องจากยังไม่ได้ Backup ข้อมูลก่อน
และนี่คือสองสิ่งที่ผมต้องการจะ Backup
คือ Folder Aruk888 ที่เก็บไฟล์ส่วนตัว และ Folder Anime ที่เก็บอนิเมะสุดรักสุดหวงอย่างเช่น Steins;Gate , Kyoukai no Kanata , Plastic Memories , Gekkan Shoujo Nozaki-kun
เนื่องจากผมไม่มี External Harddisk ที่จะใช้ในการ Backup ข้อมูลเหล่านี้ ผมจึงหาวิธีในการ Backup โดยการเปิด PC ทิ้งไว้ แล้ว Upload ลง Google Drive

แต่เนื่องจากเหตุใดไม่ทราบ เมื่อผมกลับมาถึงบ้าน พบว่าผมสามารถ Upload ได้แค่เพียง Folder Aruk888 เท่านั้น ส่วน Folder Anime นั้น ไม่ได้ถูก Upload
(จากเบาะแสที่ว่ากลับมาถึงบ้านแล้วพบว่า PC ดับอยู่ พร้อมทั้งสวิทช์ที่ปลั๊กพ่วงถูกปิดอยู่ คาดว่าแม่ผมคงจะหวังดี คิดว่าผมลืมปิดคอม จึงทำการปิดให้ โดยการปิดสวิทช์ที่ปลั๊กพ่วง)
แต่ไม่เป็นไร ไว้เดี๋ยวผมจะ Backup Folder Anime อีกรอบ แต่หากยังไม่สำเร็จอีก ผมคงต้องทำใจสูญเสียมันไป #ร้องไห้หนักมาก
ต่อมา ก่อนผมจะลง Windows ผมต้องมีตัว Install ก่อน แต่เนื่องจาก PC ของผมไม่มีช่องใส่ CD/DVD-ROM ผมจึงจำเป็นที่จะต้องทำ Flash Drive เพื่อใช้สำหรับลง Windows
โดยการทำนั้น ผมใช้ Windows Installation Media Creation Tool ในการ Download File ISO ขึ้นมา เพื่อใช้ในการทำ Flash Drive เพื่อใช้สำหรับลง Windows

(จากเบาะแสที่ว่ากลับมาถึงบ้านแล้วพบว่า PC ดับอยู่ พร้อมทั้งสวิทช์ที่ปลั๊กพ่วงถูกปิดอยู่ คาดว่าแม่ผมคงจะหวังดี คิดว่าผมลืมปิดคอม จึงทำการปิดให้ โดยการปิดสวิทช์ที่ปลั๊กพ่วง)
แต่ไม่เป็นไร ไว้เดี๋ยวผมจะ Backup Folder Anime อีกรอบ แต่หากยังไม่สำเร็จอีก ผมคงต้องทำใจสูญเสียมันไป #ร้องไห้หนักมาก
ต่อมา ก่อนผมจะลง Windows ผมต้องมีตัว Install ก่อน แต่เนื่องจาก PC ของผมไม่มีช่องใส่ CD/DVD-ROM ผมจึงจำเป็นที่จะต้องทำ Flash Drive เพื่อใช้สำหรับลง Windows
โดยการทำนั้น ผมใช้ Windows Installation Media Creation Tool ในการ Download File ISO ขึ้นมา เพื่อใช้ในการทำ Flash Drive เพื่อใช้สำหรับลง Windows

ต่อจากนั้น ผมได้นำ File ISO ที่ Download มา มาทำเป็น Flash Drive ที่สามารถใช้ในการลง Windows ได้ โดยใช้ Windows 7 USB/DVD Download Tool


ถึงแม้ว่าชื่อจะเป็น Windows 7 USB/DVD Download Tool ก็ตาม แต่ผมก็คิดว่าสามารถใช้กับ Windows 8.1 ได้
แต่เนื่องจากในตอนนี้ ผมยังไม่ได้ทำการ Backup Folder Anime จึงทำให้ผมไม่สามารถที่จะลง Windows ใหม่ได้ จึงทำให้จบกระบวนการแต่เพียงเท่านี้ก่อน
หากมีการดำเนินการลง Windows ใหม่ และลง Ubuntu แล้ว จะมาอัพเดทต่อไป
แต่เนื่องจากในตอนนี้ ผมยังไม่ได้ทำการ Backup Folder Anime จึงทำให้ผมไม่สามารถที่จะลง Windows ใหม่ได้ จึงทำให้จบกระบวนการแต่เพียงเท่านี้ก่อน
หากมีการดำเนินการลง Windows ใหม่ และลง Ubuntu แล้ว จะมาอัพเดทต่อไป
Task : Practice touch typing
Task : Practice touch typing (target 50WPM?)
จากที่ได้ไปฝึกพิมพ์สัมผัสมา โดยใช้เว็บ http://play.typeracer.com/ ในการฝึกพิมพ์สัมผัส
ล่าสุด สามารถพิมพ์ได้ โดยมีค่าเฉลี่ยอยู่ที่ 54.2WPM ถือว่าเกินกว่าเป้าหมายแล้ว แต่ก็ยังคงจะฝึกพิมพ์สัมผัสให้เร็วขึ้นต่อไป
จากที่ได้ไปฝึกพิมพ์สัมผัสมา โดยใช้เว็บ http://play.typeracer.com/ ในการฝึกพิมพ์สัมผัส
ล่าสุด สามารถพิมพ์ได้ โดยมีค่าเฉลี่ยอยู่ที่ 54.2WPM ถือว่าเกินกว่าเป้าหมายแล้ว แต่ก็ยังคงจะฝึกพิมพ์สัมผัสให้เร็วขึ้นต่อไป
สมัครสมาชิก:
บทความ (Atom)