จากใน
บทที่ ๓ ได้เรียนรู้เรื่องข้อมูลชนิดต่างๆกันไปแล้ว ในที่นี้จะมาพูดถึงลงลึกเรื่องของข้อมูลที่เป็นตัวเลข โดยพูดถึงคุณสมบัติที่สำคัญของมัน นั่นก็คือการคำนวณ 
 ข้อมูลที่เป็นตัวเลขสามารถนำมาคำนวณเพื่อให้ได้ค่าใหม่ได้ การเขียนตัวเลขหรือตัวแปรในลักษณะที่มีการกระทำอะไรต่างๆกันเช่นบวกลบคูณหารนั้นเรียกว่า
นิพจน์  ดังที่อาจจะได้เห็นกันไปแล้วในบางตัวอย่างในบทที่ผ่านๆมา ในบทนี้จะมาแนะนำเกี่ยวกับการเขียนนิพจน์โดยละเอียดขึ้น    
นิพจน์แบบต่างๆ นิพจน์ที่ใช้บ่อยๆได้แก่
| x+y | x บวก y | 
| x-y | x ลบ y | 
| x*y | x คูณ y | 
| x/y | x หาร y | 
| x//y | x หาร y โดยปัดเศษทิ้ง | 
| x%y | x หาร y เอาเศษ | 
| x**y | x ยกกำลัง y | 
 นิพจน์บางชนิดอาจเขียนในรูปแบบฟังก์ชัน
| pow(x,y) | x ยกกำลัง y (เหมือน x**y) | 
| abs(x) | ค่าสัมบูรณ์ของ x | 
 จะเห็นว่าลักษณะการเขียนนิพจน์ในภาษาโปรแกรมไม่เหมือนกับที่เขียนในคณิตศาสตร์เสียทีเดียว นั่นเพราะข้อจำกัดเรื่องสัญลักษณ์ เช่นการคูณต้องใช้ดอกจัน 
* แทนที่จะเป็นเครื่องหมายคูณ 
 สำหรับการคำนวณในระดับที่สูงขึ้นไปจะใช้ฟังก์ชันจากมอดูล 
math ซึ่งจะกล่าวถึงใน
บทที่ ๑๖  การหารโดยทั่วไปจะได้ผลเป็นเลขทศนิยมซึ่งมีจำนวนนัยสำคัญจำกัด จะไม่ออกมาเป็นเลขเศษส่วน แต่ก็มีวิธีทำให้แสดงผลออกมาเป็นเลขเศษส่วนได้โดยใช้มอดูล fractions ซึ่งจะไม่พูดถึงในที่นี้ 
 สิ่งที่นำมาคำนวณอาจไม่ใช่ตัวเลขล้วนๆ แต่เป็นตัวแปรที่เก็บข้อมูลชนิดตัวเลข เช่น
a = 129.3
b = a**2
c = b+a*19
 นอกจากนี้ยังมีรูปแบบการเขียนโดยเฉพาะสำหรับการนำตัวแปรที่มีอยู่เดิมมาปรับแก้ค่า โดยเขียนตัวดำเนินการตามด้วยเครื่องหมายเท่ากับ
| x += a | เทียบเท่ากับ | x = x+a | 
| x -= a | x = x-a | 
| x *= a | x = x*a | 
| x /= a | x = x/a | 
| x **= a | x = x**a | 
 และอื่นๆในทำนองเดียวกัน    
ลำดับความสำคัญของการคำนวณ เวลาที่มีนิพจน์ยาวๆซึ่งประกอบด้วยสัญลักษณ์ในการคำนวณหลายตัว การคำนวณจะเกิดขึ้นต่อเนื่องหลายครั้งซ้อนกันไปเรื่อยๆ โดยเริ่มไล่จากซ้ายไปขวา เช่น
a = 1+2+3+4
 ค่าของ a ก็จะเริ่มคำนวณโดยเริ่มจาก 1+2 แล้วก็ค่อยบวก 3 บวก 4 
 แต่ก็ไม่เป็นเช่นนั้นเสมอไป เพราะสัญลักษณ์การคำนวณแต่ละชนิดมีความสำคัญไม่เท่ากัน มีลำดับความสำคัญอยู่ เรียงตามนี้
- ยกกำลัง
- คูณ หาร หารปัดเศษ หารเอาเศษ
- บวก ลบ
แต่หากมีวงเล็บก็จะพิจารณาในวงเล็บก่อน 
 ส่วนสัญลักษณ์เดียวกันหรือมีความสำคัญในระดับเท่ากันนั้นจะเริ่มทำจากซ้ายไปขวา ยกเว้นยกกำลังจะทำจากขวาไปซ้าย 
 ตัวอย่าง
7+13*0 # ได้ 7
3+5**2 # ได้ 28
2**3**4 ได้ # ได้ 2417851639229258349412352
(12876+27349-95893)*0 # ได้ 0
3*10%7 # ได้ 2
3*(10%7) # ได้ 7  
   ชนิดของข้อมูลตัวเลขที่คำนวณได้ โดยปกตินำข้อมูลชนิดไหนมาคำนวณผลที่ออกมาก็จะได้เป็นชนิดนั้น เช่นจำนวนเต็มบวกจำนวนเต็มได้จำนวนเต็ม 
 แต่ในไพธอน 3 ข้อมูลที่เป็นจำนวนเต็มหารจำนวนเต็มจะได้เป็นจำนวนจริง ซึ่งมีทศนิยมได้ ที่ต้องแปลงชนิดข้อมูลก็เพื่อให้เก็บค่าทศนิยมที่เกิดขึ้นจากการหารได้ นั่นเอง เช่น
3/7 # ได้ 0.42857142857142855  
 ***ในไพธอน 2 จำนวนเต็มหารจำนวนเต็มก็ได้จำนวนเต็ม ดังนั้นเศษจะหายไปหมด ทำให้ไม่สะดวก ต้องคอยมาแปลงข้อมูลก่อน 
>>> รายละเอียด   ข้อมูลที่เป็นต่างชนิดกันก็สามารถนำมาคำนวณได้ เพียงแต่ผลลัพธ์ที่ได้นั้นจะกลายเป็นข้อมูลชนิดใดชนิดหนึ่งเท่านั้น 
 โดยทั่วไปหาเก็บจำนวนเต็มกับจำนวนจริงมากระทำกันผลที่ได้จะออกมาเป็นจำนวนจริง เช่น
1930.389+348 # ได้ 2278.389
3.3e-9+1 # ได้ 1.0000000033
 ถ้าจำนวนจริงหรือจำนวนเต็มทำกับจำนวนเชิงซ้อนก็จะได้จำนวนเชิงซ้อน
(123+44j)/20 #ได้ (6.15+2.2j)  
 หากจำนวนจริงหรือจำนวนเต็มที่ติดลบยกกำลังเศษส่วนก็จะได้จำนวนเชิงซ้อนเช่นกัน 
 เช่น 
(-2)**1.1 ได้ 
(-2.0386342710747223-0.6623924280875919j)  ***ในไพธอน 2 จะไม่สามารถทำแบบนี้ได้ 
>>> รายละเอียด  ข้อมูลชนิดบูลก็สามารถนำมาคำนวณกับตัวเลขได้ โดย 
True แทนค่า 
1 และ 
False แทนค่า 
0
True - True # ได้ 0
False*100 # ได้ 0
True + 1.5 # ได้ 2.5
   การคำนวณกับสายอักขระ ไม่เพียงแต่ตัวเลขจะมีการคำนวณเท่านั้น สายอักขระเองก็สามารถมีการคำนวณได้เช่นกัน แต่ความหมายในการคำนวณของสายอักขระนั้นจะต่างกันออกไปจากการคำนวณตัวเลขสักหน่อย โดยทำได้ค่อนข้างจำกัด 
 โดยการนำสายอักขระมาบวกกันจะเป็นการนำ สายอักขระมาต่อกัน และการนำสายอักขระมาคูณจำนวนเต็มก็จะเป็นการคัดลอกสายอักขระตามจำนวนเท่ากับที่คูณ
'ฮ่า'*7 # ได้ 'ฮ่าฮ่าฮ่าฮ่าฮ่าฮ่าฮ่า'
'ฮ่า'+'ๆ'*30 # ได้ 'ฮ่าๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ'
 แต่ถ้านำสายอักขระมาคูณด้วยจำนวนจริงก็จะขัดข้อง หรือหากนำสายอักขระมาคูณหรือลบหรือหารกันเองก็ขัดข้องเช่นกัน
'ฮ่าๆ'*3.3 # ได้ TypeError: can't multiply sequence by non-int of type 'float'
'ฮ่าๆๆ'-'ๆ' # ได้ TypeError: unsupported operand type(s) for -: 'str' and 'str'
 ดังนั้นสายอักขระจึงทำได้แค่บวกกันเอง หรือคูณกับจำนวนเต็มเท่านั้น 
 ระวังว่าสายอักขระที่เป็นตัวเลขหากนำมาบวกกันก็จะเป็นการเขียนตัวเลขต่อกัน ไม่ใช่การบวกตัวเลข
'555'+'555' # ได้ '555555' ไม่ใช่ '1110'
   อ้างอิง