# มีคนสงสัยว่า a,b = 3,4 แปลว่าอะไร
# แปลว่าให้ a มีค่า 3 และ b มีค่า 4
a, b = 3, 4
a
3
b
4
# เขียนแบบนี้ก็ได้เหมือนกัน
(a, b) = (3, 4)
a
3
b
4
# ตัวอย่างพิมพ์ค่า a, b มาด้วย f-string
# ดูเพิ่มเติมได้ที่ https://realpython.com/python-f-strings/
print(f'a is {a}, b is {b}')
a is 3, b is 4
# ตัวอย่างลิสต์
mylist = [1,2,3,4]
print(mylist)
[1, 2, 3, 4]
# เพิ่มของเข้าไปในลิสต์ด้วย append
mylist.append(5)
print(mylist)
[1, 2, 3, 4, 5]
# append เพิ่มของทีละตัวเท่านั้น
mylist.append(6,7)
print(mylist)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-11-18e23e6dd11b> in <module> 1 # append เพิ่มของทีละตัวเท่านั้น 2 ----> 3 mylist.append(6,7) 4 print(mylist) TypeError: append() takes exactly one argument (2 given)
# เครื่องหมายเปอร์เซ็นต์ทำหน้าที่หาเศษจากการหารให้เรา
1024 % 16
0
# 5 หารด้วย 2 เหลือเศษ 1
5 % 2
1
# 1024 หารด้วย 7 เหลือเศษ 2
1024 % 7
2
# ใช้ == ตรวจว่าสองข้างเท่ากันไหม
# ในที่นี้ 1024 หาร 16 ลงตัวหรือเปล่า (ดูว่าหารแล้วเศษเท่ากับ 0 หรือเปล่า)
1024 % 16 == 0
True
# เราสามารถเอาความรู้นี้มาหาตัวประกอบของ 1024 ได้
# เอาเลข 1, 2, 3, ... 1024 ไปหารดูว่าหารลงตัวไหม
# ถ้าหารลงตัวก็เป็นตัวประกอบของ 1024
for i in range(1, 1024 + 1):
if 1024 % i == 0:
print(i)
1 2 4 8 16 32 64 128 256 512 1024
# หาตัวประกอบของ 577
for i in range(1, 577):
if 576 % i == 0:
print(i)
1 2 3 4 6 8 9 12 16 18 24 32 36 48 64 72 96 144 192 288 576
# ทำเป็นฟังก์ชั่นหาตัวประกอบของตัวเลช x ใดๆ
def หาตัวประกอบ(x):
for i in range(1, x + 1):
if x % i == 0:
print(i)
หาตัวประกอบ(1)
1
หาตัวประกอบ(20)
1 2 4 5 10 20
หาตัวประกอบ(1234567)
1 127 9721 1234567
หาตัวประกอบ(12345678)
1 2 3 6 9 18 47 94 141 282 423 846 14593 29186 43779 87558 131337 262674 685871 1371742 2057613 4115226 6172839 12345678
หาตัวประกอบ(123456789)
1 3 9 3607 3803 10821 11409 32463 34227 13717421 41152263 123456789
# นับด้วยว่ามีตัวประกอบกี่ตัว
def หาตัวประกอบ(x):
count = 0
for i in range(1, x + 1):
if x % i == 0:
print(i)
count = count + 1
print("ตัวประกอบมี " + str(count) + " ตัว" )
หาตัวประกอบ(20)
1 2 4 5 10 20 ตัวประกอบมี 6 ตัว
# ฟังก์ชั่นที่ดีควรส่งผลลัพธ์กลับมาให้ผู้ใช้เอาไปทำอะไรต่อได้ให้เป็นประโยชน์มากขึ้น
# ดังนั้นเราจะส่งผลลัพธ์เป็นลิสต์ที่มีตัวประกอยไปให้ผู้ใช้แทนที่จะพิมพ์ในฟังก์ชั่นของเรา
def หาตัวประกอบ(x):
factors = []
for i in range(1, x + 1):
if x % i == 0:
factors.append(i)
return(factors)
# สมมุติว่าเราไม่ชอบชื่อเดิมของฟังก์ชั่น เราจะตั้งชื่อใหม่ให้มันด้วยก็ได้
find_factors = หาตัวประกอบ
หาตัวประกอบ(20)
[1, 2, 4, 5, 10, 20]
find_factors(20)
[1, 2, 4, 5, 10, 20]
# ตัวอย่างเอาผลลัพธ์จากฟังก์ชั่นไปทำอะไรต่อ
# ในที่นี้เอามาดูว่า 20 มีตัวประกอบกี่ตัวด้วย len(...)
f = หาตัวประกอบ(20)
print(len(f))
6
# ไล่ดูว่าตัวเลข 1 ถึง 10 แต่ละตัวมีตัวประกอบกี่ตัว
for n in range(1,11):
factors = หาตัวประกอบ(n)
print(n, len(factors))
1 1 2 2 3 2 4 3 5 2 6 4 7 2 8 4 9 3 10 4
# เรียงลำดับเลข 1-100 ตามลำดับจำนวนตัวประกอบของมันจากมากไปน้อย
results = [] #ลิสต์ที่จะเก็บคู่ลำดัย (จำนวนตัวประกอบ, ตัวเลข)
for n in range(1,101): #ไล่ตัวเลขไปตั้งแต่ 1-100
factors = find_factors(n) #หาตัวประกอบของมัน
results.append((len(factors),n)) #เก็บคู่ลำดับ (จำนวนตัวประกอบ, ตัวเลข) ไว้ในลิสต์
print(results) #พิมพ์ลิสต์มาดู
print("-" * 100) #พิมพ์บรรทัดคั่น
print(sorted(results, reverse=True)) #เรียงลำดับ (จำนวนตัวประกอบ, ตัวเลข) ตามจำนวนตัวประกอบจากมากไปน้อยด้วย sorted(..., reverse=True)
[(1, 1), (2, 2), (2, 3), (3, 4), (2, 5), (4, 6), (2, 7), (4, 8), (3, 9), (4, 10), (2, 11), (6, 12), (2, 13), (4, 14), (4, 15), (5, 16), (2, 17), (6, 18), (2, 19), (6, 20), (4, 21), (4, 22), (2, 23), (8, 24), (3, 25), (4, 26), (4, 27), (6, 28), (2, 29), (8, 30), (2, 31), (6, 32), (4, 33), (4, 34), (4, 35), (9, 36), (2, 37), (4, 38), (4, 39), (8, 40), (2, 41), (8, 42), (2, 43), (6, 44), (6, 45), (4, 46), (2, 47), (10, 48), (3, 49), (6, 50), (4, 51), (6, 52), (2, 53), (8, 54), (4, 55), (8, 56), (4, 57), (4, 58), (2, 59), (12, 60), (2, 61), (4, 62), (6, 63), (7, 64), (4, 65), (8, 66), (2, 67), (6, 68), (4, 69), (8, 70), (2, 71), (12, 72), (2, 73), (4, 74), (6, 75), (6, 76), (4, 77), (8, 78), (2, 79), (10, 80), (5, 81), (4, 82), (2, 83), (12, 84), (4, 85), (4, 86), (4, 87), (8, 88), (2, 89), (12, 90), (4, 91), (6, 92), (4, 93), (4, 94), (4, 95), (12, 96), (2, 97), (6, 98), (6, 99), (9, 100)] ---------------------------------------------------------------------------------------------------- [(12, 96), (12, 90), (12, 84), (12, 72), (12, 60), (10, 80), (10, 48), (9, 100), (9, 36), (8, 88), (8, 78), (8, 70), (8, 66), (8, 56), (8, 54), (8, 42), (8, 40), (8, 30), (8, 24), (7, 64), (6, 99), (6, 98), (6, 92), (6, 76), (6, 75), (6, 68), (6, 63), (6, 52), (6, 50), (6, 45), (6, 44), (6, 32), (6, 28), (6, 20), (6, 18), (6, 12), (5, 81), (5, 16), (4, 95), (4, 94), (4, 93), (4, 91), (4, 87), (4, 86), (4, 85), (4, 82), (4, 77), (4, 74), (4, 69), (4, 65), (4, 62), (4, 58), (4, 57), (4, 55), (4, 51), (4, 46), (4, 39), (4, 38), (4, 35), (4, 34), (4, 33), (4, 27), (4, 26), (4, 22), (4, 21), (4, 15), (4, 14), (4, 10), (4, 8), (4, 6), (3, 49), (3, 25), (3, 9), (3, 4), (2, 97), (2, 89), (2, 83), (2, 79), (2, 73), (2, 71), (2, 67), (2, 61), (2, 59), (2, 53), (2, 47), (2, 43), (2, 41), (2, 37), (2, 31), (2, 29), (2, 23), (2, 19), (2, 17), (2, 13), (2, 11), (2, 7), (2, 5), (2, 3), (2, 2), (1, 1)]