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

- ทำไมภาษานี้ถึงชื่อว่า "ภาษาไพทอน"
ก่อนที่ 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 เต็มรูปแบบ
แต่แนะนำใช้ภาษาอังกฤษดีกว่าครับ

ตัวอย่าง

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

ผลลัพธ์
False




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

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

[python]
print "Hi"[/python]

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

[python]
print("Hi")
[/python]

เมื่อสังเกตจะเห็นได้ว่า ความแตกต่างของ 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 ได้ด้วยการวางโค้ด

[python]
# -*- coding: utf-8 -*-
[/python]

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

[python]สตริง.encode("รหัสcoding")[/python]

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

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

ผลลัพธ์
b'\xc0\xd2\xc9\xd2\xe4\xb7\xc2'

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

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

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

[python]
c = b.decode("cp874")
print(c)
[/python]

ผลลัพธ์
ภาษาไทย

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




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

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

[python]
for i in range(0,4):
print(i)
[/python]

หรือ

[python]for i in range(0,4): print(i)[/python]

โค้ดที่ผิด

[python]
for i in range(0,4):
print(i)
[/python]

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




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

[python]
for i in range(0,4):
for j in range(10,15):
print(j)
[/python]

โค้ดที่ผิด

[python]
for i in range(0,4):for j in range(10,15):print(j)
[/python]

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

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




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

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

[python]
for i in range(0,4):

print("Hi")[/python]

เมื่อบันทึกเป็นไฟล์ 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

[python]
for i in range(0,4):
print("Hi")[/python]





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

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

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

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

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)