Skip to content

ปัญหาที่มักพบบ่อยในการเขียนภาษาไพทอน

- ทำไมภาษานี้ถึงชื่อว่า "ภาษาไพทอน"
ก่อนที่ Guido van Rossum ให้กำเนิดภาษาไพทอน เขาได้อ่านอ่านสคริปต์ที่ตีพิมพ์จากซีรีส์ตลก "Monty Python’s Flying Circus" ของบีบีซี ซีรีส์ตลกจากปี 1970
Guido van Rossum ได้คิดชื่อภาษาโดยเป็นชื่อที่ไม่ซ้ำกันและลึกลับเล็กน้อย เขาจึงตัดสินใจเรียกภาษานี้ว่า "ภาษาไพทอน"
อ้างอิงจาก General Python FAQ <https://docs.python.org/3/faq/general.html#why-is-it-called-python>


- โลโก้ภาษาไพทอนตกลงเป็นรูปอะไร
โลโก้ภาษาไพทอนเป็นรูปงูสองตัว
อ้างอิงจาก https://www.python.org/community/logos/


- ภาษาไพทอนสามารถทำอะไรได้บ้าง
สามารถดูได้ที่ https://www.python.org/about/success/


- ชื่อภาษา Python อ่านว่า ไพธอน หรือ ไพทอน

ตอบ อ่านว่า ไพทอน ครับ


-  สามารถตั้งชื่อตัวแปรด้วยภาษาไทยในภาษาไพทอนได้หรือไม่

ตอบ สามารถตั้งชื่อตัวแปรด้วยภาษาไทยในภาษาไพทอนได้ แต่เฉพาะ Python 3 เท่านั้น  และยังสามารถใช้ภาษาอื่น ๆ ได้ เนื่องจาก Python 3 สนับสนุน Unicode character เต็มรูปแบบ

แต่แนะนำใช้ภาษาอังกฤษดีกว่าครับ

ตัวอย่าง

แมว = 0
สุนัข = 1
พิมพ์ = print
พิมพ์(แมว == สุนัข)

ผลลัพธ์
False


- โค้ดไหนเป็น Python 2 หรือ Python 3 ดูจากตรงไหน

ในโลกอินเทอร์เน็ตได้มีเอกสารสอนเขียนและโค้ดคำสั่งภาษาไพทอนจำนวนมากมาย หลังจากที่มี Python 3 มา ทำให้ผู้ที่เริ่มต้นเขียนภาษาไพทอนมีปัญหาในการรันโค้ดผิดเวชั่น เนื่องจากบางเว็บและบางเอกสารไม่ได้ระบุว่าโค้ดนี้เป็นภาษาไพทอนเวชั่นใด โดยมีวิธีการดูง่าย ๆ ดังนี้

print "Hi"

ข้างด้านบนคือโค้ด Python 2
ข้างด้านล่างคือโค้ด Python 3

print("Hi")

เมื่อสังเกตจะเห็นได้ว่า ความแตกต่างของ Python 2 กับ Python 3 คือ วงเล็บ เนื่องจากภาษา Python 3 ได้มีการปรับปรุงไวยากรณ์และเพิ่มวงเล็บเข้ามาเพื่อป้องกันปัญหา Unicode ครับ


-ทำไมต้องมีการบังคับ indent ใน python

คำตอบ https://www.blognone.com/node/15433


- encoding/Decoding ของสตริงใน Python 3
ในภาษาไพธอน 3 ได้มีการกำหนด encoding พื้นฐานเป็น UTF-8 แต่เราสามารถ Encoding และ Decoding สตริงได้ดังนี้
1. กำหนด coding ของไฟล์ python ได้ด้วยการวางโค้ด

# -*- coding: utf-8 -*-

เข้าไปยังบรรทัดแรกของโค้ดไพทอน
2. encoding/Decoding สตริง
encoding สามารถทำได้ตามไวยากรณ์นี้

สตริง.encode("รหัสcoding")

ตัวอย่างเช่น

a = "ภาษาไทย"
b = a.encode("cp874")
print(b)

ผลลัพธ์

b'\xc0\xd2\xc9\xd2\xe4\xb7\xc2'

จะได้ข้อมูลเป็นชนิด bytes
Decoding สามารถทำได้ดังนี้

ข้อมูลชนิดbytes.decode("รหัสcoding")

ตัวอย่างเช่น

c = b.decode("cp874")
print(c)

ผลลัพธ์

ภาษาไทย

อ่านรหัส coding ได้ที่ https://python3.wannaphong.com/อ่านไว้


-วางโค้ดหรือเขียนโค้ดผิดรูปแบบ ไม่ได้เว้นวรรคหรือบรรทัด

ตัวอย่าง
โค้ดที่ถูก

for i in range(0,4):
	print(i)

หรือ

for i in range(0,4): print(i)

โค้ดที่ผิด

for i in range(0,4):
print(i)

สาเหตุที่ผิด เพราะโค้ดไม่ได้มีการเว้นวรรค คำสั่งและจัดรูปแบบให้ถูกต้องตามภาษาไพทอนครับ เป็นปัญหาที่มีชื่อว่า indented block


-วาง for ซ้อน for แล้วรันไม่ได้
ตัวอย่าง
โค้ดที่ถูก

for i in range(0,4):
	for j in range(10,15):
		print(j)

โค้ดที่ผิด

for i in range(0,4):for j in range(10,15):print(j)

สาเหตุที่ผิด เพราะผิดหลักไวยากรณ์หลักของภาษาไพทอนครับ อย่าลืมว่า

อย่าเขียนโค้ดภาษาไพทอนแบบภาษาซี

และโค้ดที่ผิดเป็นการเขียนคำสั่ง for แบบย่อ สำหรับผู้เริ่มต้นเขียนภาษาไพทอนไม่แนะนำให้ใช้ครับ


-ก็อปโค้ดจากอินเทอร์เน็ตแล้วใช้งานไม่ได้ใน Python interpreter

ตัวอย่างโค้ดตัวปัญหา

for i in range(0,4): 

	print("Hi")

เมื่อบันทึกเป็นไฟล์ 1.py แล้วลองรัน

$ python 1.py
Hi
Hi
Hi
Hi

แต่เมื่อก็อบข้างดังกล่าวเข้าไปรันใน Python interpreter

$ python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(0,4):
...
  File "", line 2

    ^
IndentationError: expected an indented block
>>>     print("Hi")
  File "", line 1
    print("Hi")
    ^
IndentationError: unexpected indent

จะพบว่า ไม่สามารถรันได้ใน Python interpreter เพราะใน Python interpreter เราต้องเขียนโค้ดอย่างต่อเนื่อง ต้องไม่มีการเว้นบรรทัดว่างในคำสั่งที่ต้องทำต่อเนื่อง เพื่อให้สามารถประมวลผลคำสั่งได้อย่างถูก เป็นปัญหาที่มีชื่อว่า indent
วิธีการแก้ไข
ลบบรรทัดว่างออกก่อนวางโค้ดคำสั่งลง Python interpreter

for i in range(0,4):
	print("Hi")

- Python สามารถเรียกใช้รันคำสั่งได้ตามปกติ แต่ไม่สามารถติดตั้งโมดูลด้วยคำสั่งใด ๆ ได้
หากวันหนึ่งคุณได้เรียกใช้คำสั่ง

python

ได้ตามปกติ แต่เมื่อต้องการติดตั้งโมดูลด้วย pip หรือจากไฟล์ setup.py ไม่ได้

ตัวอย่างของปัญหา https://www.facebook.com/groups/admin.py.dev/permalink/383656841819525/
ปัญหานี้มีทางแก้ไขเดียว คือ ลบการติดตั้ง Python แล้วทำการติดตั้งใหม่ครับ

สาเหตุของปัญหา เป็นไปได้หลายสาเหตุ ส่วนใหญ่มักจะเกิดขึ้นเมื่อทำการอัพเกรดเวชั่นภาษาไพธอนใน Windows (จากประสบการณ์ผู้เขียน) หรืออัพเกรดเวชั่นของ pip น่าจะมีจากมีไลบรารีบางตัวไม้ได้ถูกอัพเกรดไปด้วย ทำให้โค้ดแกนกลางมีปัญหา หากต้องการอัพเกรด pip ไม่แนะนำให้ทำการอัพเกรดเอง แนะนำให้รอ Python เวชั่นใหม่ครับ

6 thoughts on “ปัญหาที่มักพบบ่อยในการเขียนภาษาไพทอน

  1. wannaphong

    เอกสารนี้ยังอยู่ในช่วงกำลังเพิ่มเนื้อหาครับ หากท่านใดต้องการเสนอปัญหา สามารถเสนอได้ตามช่องความคิดเห็นนี้ครับ 😀

    Reply
  2. Kuu.hmu

    เจ๋งครับผม เพิรงรู้เหมือนกัน ปกติ ใช้ แต่ 2 ขอบคุณมากคร้าบบ

    Reply
  3. Palawast

    ขอบคุณมากเลยครับ ผมกำลังศึกษา Basic Python อยู่เลย
    เริ่ม ศรัทธาใน Python และคิดว่ามาถูกทาง

    โดยเฉพาะ ผม เคารพแนวทางของการเขียนโดยมี "indent" นะครับ

    Reply
  4. chontidap.

    ขอสอบถามหน่อยได้มั้ยคะ ? คือตอนนี้กำลังเขียนภาษาไพทอนอยู่แต่ว่ามีปัญหานิดหน่อยน่ะค่ะ คือเขียนเป็นโปรแกรมคิดเกรดในใบ transcript 6 เทอมค่ะ โดยดึงค่าเกรดจาก excel ถ้าอยากรู้เทอมไหนก็ให้ user ป้อน ว่าอยากรู้เทอมที่ 1 คือคำนวณจาก row ที่ 7 - rowที่ 13 (userต้องรู้ว่าแต่ละเทอมมี่กี่ row) ก็คำนวณเกรดเทอมนั้นออกมาแต่ยังไม่ทราบวิธีเก็บเกรดเทอมนั้นน่ะค่ะ พอดีว่าต้องเอาเกรดเทอมนั้นไปคิดเกรดรวมต่อ ช่วยบอกวิธีหน่อยได้ไหมคะ ว่าจะเก็บเกรดแต่ละเทอมมาใช้ต่อได้อย่างไร

    Reply
  5. คมสัน

    @wannaphong ผมรบกวนขอ e-mail ติดต่อได้ไหมครับ ผมยังสงสัยการจับภาพจากกล้องแล้วนำภาพที่ได้ไปเปรียบเทียบกับภาพที่เราบันทึกไว้ได้อย่างไรครับ ต้องรบกวนด้วยครับ

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *