Str Number

ตัวเลข

ตัวเลขใน Python ที่ใช้กันบ่อยมีอยู่ 2 แบบ คือ int (จำนวนเต็ม) กับ float (ทศนิยม) โดยที่ int นั้นสามารถเขียนให้ใหญ่เท่าไหร่ก็ได้ (ไม่มี overflow) ในขณะที่ float ยังคง implement ตาม IEEE-754 อยู่ครับ

การประกาศตัวเลข float ต่างจาก int ตรงที่ต้องใส่จุดทศนิยมเข้าไป หรือไม่เช่นนั้นก็บอกส่วน mantisa แล้วตามด้วย exponent ดังตัวอย่าง:

    >>> 42
    42
    >>> 7427466391
    7427466391
    >>> 4.
    4.0
    >>> 3.1416
    3.1416
    >>> 1e10
    10000000000.0

ตัวเลขอีกแบบที่อาจจะไม่ค่อยได้เห็นกันซักเท่าไหร่ (ถ้าไม่ได้ทำงานสายคณิต/วิศวะ) คือ complex (จำนวนเชิงซ้อน)

การเขียนเลข complex ก็ง่ายเหมือนกับการเขียนจำนวนเชิงซ้อนในกระดาษเลย คือเขียนส่วนจริงบวก/ลบส่วนจินตภาพ ทั้งนี้ หน่วยจินตภาพจะใช้ตัว j ตามแบบวิศวะ และต้องมีตัวเลขนำหน้าเท่านั้น

    >>> 1+0j
    (1+0j)
    >>> 5j
    5j

ใช้เป็นเครื่องคิดเลข

การบวก ลบ คูณ จะให้ผลลัพท์ data กลับมาเป็น int, float หรือ complex ตามอันที่ใหญ่ที่สุด

    >>> 7 - 3
    4
    >>> 1 + 3.4
    4.4
    >>> 6 * (3-5j)
    (18-30j)

ส่วนการหารด้วยเครื่องหมาย / จะให้ผลลัพท์แค่ float หรือ complex เท่านั้น

    >>> 8 / 4
    2.0
    >>> 6 / 9j
    -0.6666666666666666j

ถ้าต้องการผลลัพท์เป็น int ให้ใช้เครื่องหมาย // โดยทศนิยมที่เกินมาจะถูกปัดลงเสมอ แน่นอนว่ามันรับเลข complex ไม่ได้

    >>> 8 // 4
    2
    >>> 11 // 4
    2
    >>> -9 // 4
    -3

modulo ใช้เครื่องหมาย % ซึ่งมันใช้ได้กับ int, float เท่านั้น ทั้งนี้ เครื่องหมายของผลลัพท์ จะเป็นบวก/ลบตามตัวหาร ไม่ต้องมาเผื่อเอง

    >>> 23 % 4
    3
    >>> -99 % 6.
    3.0
    >>> 12 % -9
    -6

ที่เจ๋งอีกอย่างคือ Python มียกกำลังเป็นเครื่องหมายให้ใช้เลย ไม่ต้องเรียกผ่านฟังก์ชัน

    >>> 0**0
    1
    >>> 2 ** 0.5
    1.4142135623730951
    >>> 1j ** (5+4j)
    (5.717205586622551e-19+0.0018674427317079893j)

แต่ถ้าอยากใช้เป็นฟังก์ชัน ก็สามารถใช้ pow ได้ ซึ่งอาจมี argument เพิ่มอีกตัวคือการ modulo หลังยกกำลังเสร็จ

    >>> pow(2, 5)
    32
    >>> pow(2, 7830457, 100000000000000)
    55839700303872

การแปลงตัวเลขระหว่าง int, float, complex สามารถทำได้ผ่านฟังก์ชันเลย

    int(3.1416)      # round down toward zero
    int(-5.432)      # round up toward zero
    float(5)

    x = 1.6180
    y = 2.7182
    z = x-y*1j
    complex(6.66)
    complex(0, 1)

อย่างไรก็ตาม complex ไม่สามารถแปลงเป็น int หรือ float ได้โดยอัตโนมัติ ต้องระบุว่าจะหาส่วนจริงหรือส่วนจินตภาพเช่นนี้

    >>> z = 1+0.3j
    >>> z.real
    1.0
    >>> z.imag
    0.3

สำหรับการดำเนินการทางคณิตศาสตร์แล้ว assign ค่าให้ตัวแปรเดิม ก็ทำได้ทั่วไปเช่นภาษาอื่น

    a = 1

    # augmented assignment
    a += 1   # 2
    a -= 4    # -2
    a *= a    # 4
    a **= 3   # 64
    a %=2   # 0

ทั้งนี้ ใน Python ไม่มี increment พวก i++ ให้ใช้นะครับ

ข้อความอักษร

สำหรับอักษรใน Python มีเพียง string ให้ใช้เพียงอย่างเดียวเท่านั้น (ไม่มี char ครับ)

การประกาศ string ใน Python สามารถใช้เครื่องหมายได้ทั้ง ' (single quote) และ " (double quote) เลย ซึ่งมันไม่มีความแตกต่างด้าน performance เหมือน PHP ครับ

    hi = "greetin' from moon."
    yo = "おはようございます。"
    cx = 'i\'m not a "hero".'

และยังมีท่าประหลาดๆ ในการประกาศ string แบบนี้ด้วย

    us = 'you'      ' and me'     # return 'you and me'

นอกจากนี้ การประการ string ด้วย ''' (3 single quote) และ """ (3 double quote) จะทำให้เราเขียน string หลายบรรทัดง่ายขึ้น เพราะมันจะแปลงเครื่องหมายขึ้นบรรทัดใหม่ให้เป็น \n โดยอัตโนมัติ

    document = '''you can ask any question to this amazing computer.
    please, except the meaning of life, universe, & everything. '''
    deepthought = """it's 42. end of story.
    bother me no more, i'm watching tv!"""

อย่างหนึ่งที่ต้องตระหนักคือ string ของ Python เป็น immutable คือสร้างแล้วไม่สามารถแก้ไขมันได้ครับ (แล้วเราจะมาดูเรื่องนี้กันอีกที)

Nattawut Phetmak

Jack of all Trades

blog comments powered by Disqus