กระดาษทดโปรแกรมมิ่ง ม. 1

In [1]:
# ตัวอย่างตัวแปรประเภทต่างๆ

x = 312 #จำนวนเต็ม (int)
y = -3.14 #เลขทศนิยม (float)
s = "Hello, World." #ข้อความ (string)
a = [1, 2, 3, 4 , 100] #ลิสต์ของตัวเลข 
b = ["A", "Hello", "Good Bye"] #ลิสต์ของข้อความ 
c = [1, -0.5, "Hello", [3,4], a, b] #ลิสต์ของสิ่งต่างๆหลายแบบ
t = (1, 4, 9, 16, 25) #ชุดของตัวเลข (tuple)
w = ((1,2,3), (4,5,6)) #ชุดของชุดตัวเลข (tuple of tuples)
In [2]:
# เลขจำนวนเต็มบวกกับเลขทศนิยมได้

x + y
Out[2]:
308.86
In [3]:
# เลขจำนวนเต็มบวกกับข้อความไม่ได้

x + s
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-5567e437091b> in <module>
      1 # เลขจำนวนเต็มบวกกับข้อความไม่ได้
      2 
----> 3 x + s

TypeError: unsupported operand type(s) for +: 'int' and 'str'
In [4]:
# เลขจำนวนเต็มบวกกับลิสต์ไม่ได้

x + a
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-311bbe670be6> in <module>
      1 # เลขจำนวนเต็มบวกกับลิสต์ไม่ได้
      2 
----> 3 x + a

TypeError: unsupported operand type(s) for +: 'int' and 'list'
In [5]:
# ลิสต์กับลิสต์บวกกันได้

a + b
Out[5]:
[1, 2, 3, 4, 100, 'A', 'Hello', 'Good Bye']
In [6]:
# หน้าตาของ c ที่มีลิสต์ a และลิสต์ b เป็นสมาชิกอยู่ด้วย

c
Out[6]:
[1, -0.5, 'Hello', [3, 4], [1, 2, 3, 4, 100], ['A', 'Hello', 'Good Bye']]
In [7]:
# เอาเลขจำนวนเต็มบวกคูณกับข้อความได้

3 * "Hello "
Out[7]:
'Hello Hello Hello '
In [8]:
# ลองเอาเลขจำนวนเต็มลบคูณกับข้อความดูว่าจะเป็นอย่างไร

-3 * "Hello "
Out[8]:
''
In [9]:
# ข้อความบวกกับจำนวนเต็มไม่ได้

s + x
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-ba656b8f6b23> in <module>
      1 # ข้อความบวกกับจำนวนเต็มไม่ได้
      2 
----> 3 s + x

TypeError: must be str, not int
In [10]:
# ต้องเปลี่ยนจำนวนเต็ม x ให้เป็นข้อความด้วย str(x) ก่อนที่จะเอาไปบวกกับข้อความ s ได้

s + str(x)
Out[10]:
'Hello, World.312'
In [11]:
# เปลี่ยนจำนวนเต็ม x ให้เป็นข้อความด้วย str(x)

str(x)
Out[11]:
'312'
In [12]:
# ลองบวกข้อความที่หน้าตาเหมือนตัวเลข "123" กับจำนวนเต็ม 456
# บวกกันไม่ได้ ข้อความบวกกับจำนวนเต็มไม่ได้

p = "123"
p + 456
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-37f89b5c0025> in <module>
      3 
      4 p = "123"
----> 5 p + 456

TypeError: must be str, not int
In [13]:
# ถ้าจะบวกให้ได้ ต้องเปลี่ยนข้อความ p ให้เป็นจำนวนเต็มด้วย int(p) ก่อน

int(p) + 456
Out[13]:
579
In [14]:
# การทำงานซ้ำๆด้วย for i in range

for i in range(1,11):
    print(i)
1
2
3
4
5
6
7
8
9
10
In [15]:
# ให้คอมพิวเตอร์บวกเลข 1 ถึง 10 ให้

sum = 0
for i in range(1,11):
    sum = sum + i
print(sum)
55
In [16]:
# ให้คอมพิวเตอร์บวกเลข 1 ถึง 1,000,000 ให้
# สังเกตว่าเราใส่ _ แทนที่ , ให้อ่านตัวเลขยาวๆให้ง่ายขึ้นได้

sum = 0
for i in range(1, 1_000_001):
    sum = sum + i
print(sum)
500000500000
In [17]:
# ให้คอมพิวเตอร์บวกเลข 1**2, 2**2, 3**2, ..., 10**2 ให้


sum = 0
for i in range(1,11):
    sum = sum + i**2
print(sum)
385
In [18]:
# ให้คอมพิวเตอร์บวกเลข 1**3, 2**3, 3**3, ..., 10**3 ให้

sum = 0
for i in range(1,11):
    sum = sum + i**3
print(sum)
3025
In [19]:
# ถ้าจะให้พิมพ์ทีละขั้นตอน ก็ใส่ print ไว้ใต้ for i in range ด้วย
sum = 0
for i in range(1,11):
    sum = sum + i**3
    print(sum)
1
9
36
100
225
441
784
1296
2025
3025
In [20]:
# สังเกตว่าผลรวมของตัวเลขกำลังสาม เท่ากับ (ผลรวมตัวเลข)ยกกำลังสอง
import math
sum = 0
for i in range(1,11):
    sum = sum + i**3
    print(sum, math.sqrt(sum))
1 1.0
9 3.0
36 6.0
100 10.0
225 15.0
441 21.0
784 28.0
1296 36.0
2025 45.0
3025 55.0
In [21]:
# สร้างฟังก์ชั่นมาบวกเลข 1 + 2 + 3 + ... + n

def sum_to(n):
    "คำนวณผลรวม 1 + 2 + 3 + ... + n"
    sum = 0
    for i in range(1,n+1):
        sum = sum + i
    return(sum)
In [22]:
sum_to(100)
Out[22]:
5050
In [23]:
sum_to(1)
Out[23]:
1
In [24]:
# สร้างฟังก์ชั่นมาบวกเลข 1**2 + 2**2 + 3**2 + ... + n**2

def sum_sqr_to(n):
    "คำนวณผลรวม 1**2 + 2**2 + 3**2 + ... + n**2"
    sum = 0
    for i in range(1,n+1):
        sum = sum + i*i
    return(sum)
In [25]:
sum_sqr_to(3)
Out[25]:
14
In [26]:
for i in range(11):
    print(i, sum_to(i), sum_sqr_to(i))
0 0 0
1 1 1
2 3 5
3 6 14
4 10 30
5 15 55
6 21 91
7 28 140
8 36 204
9 45 285
10 55 385
In [27]:
# สร้างฟังก์ชั่นมาบวกเลข 1**3 + 2**3 + 3**3 + ... + n**3

def sum_cube_to(n):
    "คำนวณผลรวม 1**3 + 2**3 + 3**3 + ... + n**3"
    sum = 0
    for i in range(1,n+1):
        sum = sum + i**3
    return(sum)
In [28]:
sum_cube_to(3)
Out[28]:
36
In [29]:
for i in range(11):
    print(i, sum_to(i), sum_sqr_to(i), sum_cube_to(i))
0 0 0 0
1 1 1 1
2 3 5 9
3 6 14 36
4 10 30 100
5 15 55 225
6 21 91 441
7 28 140 784
8 36 204 1296
9 45 285 2025
10 55 385 3025
In [30]:
sum_cube_to(0)
Out[30]:
0
In [31]:
# สร้างฟังก์ชั่นมาบวกเลข 1**p + 2**p + 3**p + ... + n**p

def sum_power_to(n, p):
    "คำนวณ 1**p + 2**p + 3**p + ... + n**p"
    sum = 0
    for i in range(1, n+1):
        sum = sum + i ** p
    return(sum)
In [32]:
sum_power_to(10,2)
Out[32]:
385
In [33]:
#เปรียบเทียบฟังก์ชั่นบวกเลข 1**p + 2**p + 3**p + ... + n**p
# โดยที่ p มีค่าตั้งแต่ 0 ถึง 5

for i in range(11):
    for power in range(0,6):
        print(sum_power_to(i,power), " ", end="")
    print()
0  0  0  0  0  0  
1  1  1  1  1  1  
2  3  5  9  17  33  
3  6  14  36  98  276  
4  10  30  100  354  1300  
5  15  55  225  979  4425  
6  21  91  441  2275  12201  
7  28  140  784  4676  29008  
8  36  204  1296  8772  61776  
9  45  285  2025  15333  120825  
10  55  385  3025  25333  220825