ไฟล์ในโครงการรับนักเรียนเข้าฝึกทักษะวิจัย ณ สวทช.

ไฟล์ทั้งหมดที่ใช้และสร้างที่เกี่ยวข้องขณะเข้าร่วมการฝึกทักษะวิจัยที่ NECTEC สวทช.

View the Project on GitHub ptsgrn/nstda-nectec-summer-2022

View My GitHub Profile

22/03/2022

โดย Prachya Boonkwan and Patsagorn Yuenyong, CC-BY-SA-3.0

การโปรแกรมภาษา Python (ไพธอน) เบื้องต้น — https://tinyurl.com/y9wmkgj5

ปรัชญา บุญขวัญ

Email: prachya.boonkwan@nectec.or.th

(C) December 2018

สารบัญ

บทนำ


กิจกรรม 1: พิมพ์ข้อความออกหน้าจอ

คำสั่ง print

print('Hello world!')
Hello world!

แบบฝึกหัด 1.1

คราวนี้เรามาลองพิมพ์สตริง 'สวัสดีจ้ะ' ออกที่หน้าจอกันบ้าง ลองเติมข้อความดังกล่าวลงในเครื่องหมายคำพูดเดี่ยวดูนะครับ

print('สวัสดีจ้ะ')
สวัสดีจ้ะ

ลองเปลี่ยนสตริงดูตามใจชอบ แล้วลองรันดูนะครับ

หมายเหตุ (comment)

print('Hello')      # แสดงข้อความ Hello ออกที่หน้าจอ
Hello
# แสดงข้อความ Hello ออกที่หน้าจอ
print('Hello')
Hello
print('Please')
print('Mr.')
# print('and Ms.')
print('Postman')
print('Look and See')
Please
Mr.
Postman
Look and See

แบบฝึกหัด 1.2

ลองใส่เครื่องหมาย # หน้าบรรทัดต่างๆ ในโค้ด แล้วสังเกตความเปลี่ยนแปลงของผลลัพธ์

print('Hello')
print('World')
print('My')
# print('name')
print('is')
# print('Peter')
Hello
World
My
is

กิจกรรม 2: การคำนวณทางคณิตศาสตร์

คำสั่งเลขคณิต (arithmetic operations) และนิพจน์ทางคณิตศาสตร์ (mathematical expression)

5 * 2 + 10
20
10 + 5 / 2
12.5

แบบฝึกหัด 2.1

เรามาลองคำนวณค่าของนิพจน์ทางคณิตศาสตร์ต่อไปนี้กันดูบ้างครับ

  1. $ \frac{3}{4} + \frac{1}{4} $
3/4 + 1/4
1.0
  1. $ 1 + 6 \times 8 - 7 $
1+6*8-7
42
  1. $ 5 \times 6 + 7 \times 8 - \frac{2}{5} $
5*6+7*8-2/5
85.6

วงเล็บในนิพจน์ทางคณิตศาสตร์

4 * 3 + (1 + 2) / 4
12.75
((1 / (2 + 3)) * 4 + 5) / 6
0.9666666666666667
(1 + 2) * 3
9
1 + (2 * 3)
7

แบบฝึกหัด 2.2

เรามาลองคำนวณค่าของนิพจน์ทางคณิตศาสตร์ต่อไปนี้กันครับ

  1. $ 3 \times (4 + 1 - 2 \times 5) $
3 * (4 + 1 - 2 * 5)
-15
  1. $ \frac{1 + 2 + 3}{4 + 5 + 6} $ [หมายเหตุ: โปรดเลือกการใช้เครื่องหมายวงเล็บด้วยความระมัดระวัง]
(1 + 2 + 3) / (4 + 5 + 6)
0.4
  1. $ 7 \times \frac{5 + 6}{7 + \frac{7}{8}} $
7 * ((5 + 6) / 7 + 7/8)
17.125

เครื่องหมายยกกำลัง (power) และการถอดราก (root)

2 ** 5
32
(2 * 5) ** 3
1000
2 * (5 ** 3)
250
2 * 5 ** 3
250
\[\sqrt[r]{a} = a^{1/r}\]
8**(1/3)
2.0

แบบฝึกหัด 2.3

เรามาคำนวณค่าของนิพจน์ดังต่อไปนี้กันครับ

  1. $ 3^{5 + 3/4} $
3**(5+3/4)
553.920214840011
  1. $ \sqrt[2]{\left( 7 + 3 \times 4 \right)} $
(7+3*4)**(1/2)
4.358898943540674
  1. $ \frac{5 + 6^{2.5}}{\sqrt[2]{3.5}} + 3^2 $
((5+6**2.5)/3.5**(1/2))+3**2
58.8076767100986

กิจกรรม 3: ตัวแปร

ตัวแปร (variable)

a = 2**5               # ทดค่าไว้ในตัวแปร a
b = 5**(1/2)           # ทดค่าไว้ในตัวแปร b
a**3 + b**3
32779.1803398875
print(a)
print(b)
32
2.23606797749979
width = 40
height = 30
area = width * height
print(area)
1200
width = 40
height = 30
area_of_triangle = 1/2 * width * height
print(area_of_triangle)
600.0
width = 40
height = 30
area_of_triangle = 1/2 * width * height
print('width =', width, 'and height =', height)
print('area = width * height =',area_of_triangle)
width = 40 and height = 30
area = width * height = 600.0

แบบฝึกหัด 3.1

  1. ทดลองกำหนดค่าในตัวแปร a, b, และ c ในโค้ดด้านล่าง แล้วสังเกตความเปลี่ยนแปลงของผลลัพธ์
a = 10
b = 20
c = 30
mean = (a + b + c)/3     # เติมโค้ดที่นี่
print(mean)
20.0
  1. ตัวแปร mean ในโค้ดด้านบนคือค่าอะไร? ทำไมจึงต้องตั้งชื่อตัวแปรแบบนี้?

  2. จงเขียนโค้ดลงในช่องว่างให้สมบูรณ์ เพื่อคำนวณค่าเฉลี่ยฮาร์โมนิก (harmonic mean) ของตัวแปร a, b, และ c โดยค่าเฉลี่ยฮาร์โมนิกมีสูตรดังนี้

\[\mathrm{hmean}(a, b, c) = \frac{3}{\frac{1}{a} + \frac{1}{b} + \frac{1}{c}}\]
a = 10
b = 20
c = 10
hmean = 3/(1/a + 1/b + 1/c)     # เติมโค้ดที่นี่
print(hmean)
12.0
  1. ทดลองเปลี่ยนค่าตัวแปร a, b, และ c และสังเกตความเปลี่ยนแปลงของผลลัพธ์

  2. เขียนโค้ดเพื่อคำนวณปริมาตรของทรงรี (ellipsoid) จากตัวแปรต่อไปนี้

    • ความกว้างเก็บอยู่ในตัวแปร width
    • ความยาวเก็บอยู่ในตัวแปร length
    • ความลึกเก็บอยู่ในตัวแปร depth

สูตรของปริมาตรทรงรีมีดังนี้

\[\mathtt{volume} = \frac{4}{3} \times \pi \times \mathtt{width} \times \mathtt{length} \times \mathtt{depth}\]
pi = 3.1415926   # ค่า 𝜋 (ไพ)

# กำหนดความกว้างในตัวแปร width ให้เท่ากับ 20
width = 20

# กำหนดความยาวในตัวแปร length ให้เท่ากับ 30
length = 30

# กำหนดความลึกในตัวแปร depth ให้เท่ากับ 40
depth = 40

# คำนวณปริมาตรของทรงรีแล้วเก็บในตัวแปร volume
volume = (4/3) * pi * width * length * depth

# พิมพ์ค่าในตัวแปร volume
print(volume)
100530.9632

กิจกรรม 4: การเก็บรายการข้อมูล

ลิสต์ (list)

[163.5, 150.0, 167.0, 161.25, 170.0]
[163.5, 150.0, 167.0, 161.25, 170.0]
# ลิสต์ความสูงของนักเรียนในกลุ่ม
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]
print('student heights =', student_heights)
student heights = [163.5, 150.0, 167.0, 161.25, 170.0]

แบบฝึกหัด 4.1

ลองสร้างลิสต์จากรายการสมาชิกดังต่อไปนี้ [10, 20, 30, 40, 50] แล้วเก็บลงในตัวแปร my_list

my_list = [10, 20, 30, 40, 50]   # เติมโค้ดที่นี่
print(my_list)
[10, 20, 30, 40, 50]

ขนาดของลิสต์

len(student_heights)
5

แบบฝึกหัด 4.2

จงหาขนาดของลิสต์ในตัวแปร my_list ใส่ตัวแปร my_length แล้วพิมพ์ค่าของตัวแปรดังกล่าวออกหน้าจอ

my_length = len(my_list)     # เติมโค้ดที่นี่
print(my_length)
5

การเข้าถึงสมาชิกภายในลิสต์

print(student_heights[0])
print(student_heights[1])
print(student_heights[2])
print(student_heights[3])
print(student_heights[4])
163.5
150.0
167.0
161.25
170.0
print(student_heights[10])     # ทั้งๆ ที่ลิสต์ student_heights มีขนาดแค่ 5 ตัว
---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

/tmp/ipykernel_4163/727272617.py in <module>
----> 1 print(student_heights[10])     # ทั้งๆ ที่ลิสต์ student_heights มีขนาดแค่ 5 ตัว


IndexError: list index out of range

แบบฝึกหัด 4.3

จงคำนวณผลรวมของสมาชิกทุกตัวของลิสต์ในตัวแปร my_list เพื่อหาค่าเฉลี่ยโดยใช้สูตร

\[\mathrm{avg}(\mathbf{a}) = \frac{\sum_{i = 1}^N a_i}{N}\]

เมื่อค่า $ N $ คือจำนวนสมาชิกที่มีในลิสต์ $ \mathbf{a} $

# คำนวณผลรวมของสมาชิกทุกตัวใน my_list
my_summation = sum(student_heights)      # เติมโค้ดที่นี่
my_average = my_summation / my_length
print(my_average)
162.35

การเปลี่ยนแปลงสมาชิกภายในลิสต์

student_heights[1] = 180.0
print(student_heights)
[163.5, 180.0, 167.0, 161.25, 170.0]

แบบฝึกหัด 4.4

จงเพิ่มค่าให้สมาชิกทุกตัวของลิสต์ในตัวแปร my_list อย่างละ 5 ด้วยเครื่องหมาย + และพิมพ์ตัวแปร my_list ออกหน้าจอ

my_list = [10, 20, 30, 40, 50]

my_list = [i + 5 for i in my_list]

print(my_list)
[15, 25, 35, 45, 55]

ได้ผลลัพธ์เป็น [15, 25, 35, 45, 55] หรือเปล่าครับ?

การเลือกบางส่วนของลิสต์ (slicing)

student_heights
[163.5, 180.0, 167.0, 161.25, 170.0]
student_heights[1:4]
[180.0, 167.0, 161.25]
student_heights[1:]
[180.0, 167.0, 161.25, 170.0]
student_heights[:4]
[163.5, 180.0, 167.0, 161.25]

แบบฝึกหัด 4.5

ในแบบฝึกหัดนี้ เรามีลิสต์ my_list ที่มีสมาชิก 10 ตัวดังนี้

my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
  1. จงเลือกสมาชิกตัวที่ 3 จนถึงตัวที่ 7
# เริ่มต้นจากสมาชิกตัวที่ 3 --> index = 2
# จบที่สมาชิกตัวที่ 7 --> index = 6
# แปลว่า เราเลือก index 2 จนถึง index 6
# ขอบล่างของ slicing คือ index 2
# ขอบบนของ slicing คือ index 6 + 1
# จึงเขียนเป็น slicing ได้ว่า my_list[2:7]
my_list[2:7]
[30, 40, 50, 60, 70]
  1. จงเลือกสมาชิกตัวที่ 2 จนถึงตัวที่ 5
my_list[1:5]
[20, 30, 40, 50]
  1. จงเลือกสมาชิกตั้งแต่ตัวแรกจนถึงตัวที่ 8
my_list[:8]
[10, 20, 30, 40, 50, 60, 70, 80]
  1. จงเลือกสมาชิกตั้งแต่ตัวที่ 4 เป็นต้นไป
my_list[3:]
[40, 50, 60, 70, 80, 90, 100]

กิจกรรม 5: ข้อความ

message = 'Hello'
print(message)
Hello

การต่อข้อความ

message1 = 'Hello '
message2 = 'World!'
message = message1 + message2
print(message)
Hello World!

การทำซ้ำข้อความ

3 * 'hello'
'hellohellohello'

แบบฝึกหัด 5.1

จงสร้างตัวแปร 2 ตัว

หลังจากนั้นให้ทำซ้ำ message1 3 ครั้ง และ message2 5 ครั้ง นำผลลัพธ์ทั้งสองอันมาต่อกัน แล้วนำมาเก็บในตัวแปร message3

message1 = 'Hello ' * 3
message2 ='World ' * 5
message3 = message1 + message2
print(message3)
Hello Hello Hello World World World World World 

ข้อความในฐานะของลิสต์

message = 'hello'
print(message[0])
print(message[1])
print(message[2])
print(message[3])
print(message[4])
h
e
l
l
o
message[1:4]
'ell'
message[1] = 'E'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

/tmp/ipykernel_19426/1623769051.py in <module>
----> 1 message[1] = 'E'


TypeError: 'str' object does not support item assignment

สูตร: ถ้าอยากได้ตัวที่ x จนถึงตัวที่ y จะเขียนเป็น slicing ได้ว่า [x - 1 : y]

แบบฝึกหัด 5.2

  1. จงทำซ้ำข้อความ 'prachya' จำนวน 10 ครั้งแล้วเก็บไว้ในตัวแปร my_string
my_string = 'prachya' * 10
print(my_string)
prachyaprachyaprachyaprachyaprachyaprachyaprachyaprachyaprachyaprachya
  1. จงเลือกบางส่วนของข้อความ my_string เริ่มจากตัวที่ 10 จนถึงตัวที่ 30 แล้วเก็บลงในตัวแปร my_string1
my_string1 = my_string[9:30]
print(my_string1)
achyaprachyaprachyapr
  1. จงเลือกบางส่วนของข้อความ my_string ตั้งแต่ตัวที่ 20 เป็นต้นไป แล้วเก็บลงในตัวแปร my_string2
my_string2 = my_string[19:]
print(my_string2)
yaprachyaprachyaprachyaprachyaprachyaprachyaprachya
  1. จงเลือกบางส่วนของข้อความ my_string ตั้งแต่ตัวแรกจนถึงตัวที่ 40 แล้วเก็บลงในตัวแปร my_string3
my_string3 = my_string[:40]
print(my_string3)
prachyaprachyaprachyaprachyaprachyaprach

กิจกรรม 6: การวนซ้ำ

ลูปฟอร์ (for-loop)

# ลิสต์ความสูงของนักเรียนในกลุ่ม
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

# สมาชิกแต่ละตัวของลิสต์ student_heights จะแทนด้วยตัวแปร height
for height in student_heights:
    # พิมพ์ค่าของตัวแปร height ออกหน้าจอ
    print(height)
    
print('That is all.')
163.5
150.0
167.0
161.25
170.0
That is all.

กฎการย่อหน้าของภาษาไพธอน

แบบฝึกหัด 6.1

  1. พิมพ์สมาชิกแต่ละตัวในลิสต์ my_list ออกหน้าจอโดยใช้ลูปฟอร์และคำสั่ง print
my_list = ['hello', 'my', 'name', 'is', 'prachya']

# ลูปฟอร์
for i in my_list:
  print(i)
hello
my
name
is
prachya
  1. เพิ่มค่าสมาชิกแต่ละตัวในลิสต์ my_numbers ตัวละ 10 และพิมพ์ออกหน้าจอ
my_numbers = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10]

# ลูปฟอร์
for number in my_numbers:
    number = number + 10
    print(number)
110
100
90
80
70
60
50
40
30
20

ช่วงจำนวน (range)

for i in range(1, 11):
    print('i =', i)
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
for i in range(20):
    print('i =', i)
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
i = 11
i = 12
i = 13
i = 14
i = 15
i = 16
i = 17
i = 18
i = 19
# ก้าวมีขนาดเท่ากับ 2
for i in range(0, 21, 2):
    print(f"{i=}")
i=0
i=2
i=4
i=6
i=8
i=10
i=12
i=14
i=16
i=18
i=20
# ก้าวมีขนาดติดลบ แปลว่าเดินถอยหลัง
for i in range(10, 0, -1):
    print(i)
    
# สังเกตว่าลูปฟอร์จะหยุดทำงานเมื่อค่า index i = 0 ทำให้ไม่พิมพ์ค่า 0 ออกมาทางหน้าจอ
10
9
8
7
6
5
4
3
2
1

แบบฝึกหัด 6.2

  1. จงวนลูปค่า index i จากค่า 1 ถึง 20 แล้วพิมพ์ค่าของ 2 * i ออกมาทางหน้าจอ
# วนลูปค่า index i จาก 1 ถึง 20
for i in range(1, 21):
    # พิมพ์ค่า 2 * i ออกทางหน้าจอ
    print(2 * i)
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
  1. จงวนลูปค่า index i จากค่า 100 จนถึง 10 แล้วพิมพ์ค่า i / 10 ออกมาทางหน้าจอ
# วนลูปค่า index i จาก 100 จนถึง 10
for i in range(100, 9, -1):
    # พิมพ์ค่า i / 10 ออกมาทางหน้าจอ
    print(i / 10)
10.0
9.9
9.8
9.7
9.6
9.5
9.4
9.3
9.2
9.1
9.0
8.9
8.8
8.7
8.6
8.5
8.4
8.3
8.2
8.1
8.0
7.9
7.8
7.7
7.6
7.5
7.4
7.3
7.2
7.1
7.0
6.9
6.8
6.7
6.6
6.5
6.4
6.3
6.2
6.1
6.0
5.9
5.8
5.7
5.6
5.5
5.4
5.3
5.2
5.1
5.0
4.9
4.8
4.7
4.6
4.5
4.4
4.3
4.2
4.1
4.0
3.9
3.8
3.7
3.6
3.5
3.4
3.3
3.2
3.1
3.0
2.9
2.8
2.7
2.6
2.5
2.4
2.3
2.2
2.1
2.0
1.9
1.8
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1.0
  1. จงวนลูปค่า index i จากค่า 0 ถึง len(student_heights) - 1 และแปลงหน่วยความสูงของนักเรียนแต่ละคนจากหน่วยเซนติเมตรเป็นหน่วยเมตร [คำใบ้: 100 เซนติเมตร = 1 เมตร]
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

for i in range(len(student_heights)):
    print(student_heights[i] * 0.01)
1.635
1.5
1.67
1.6125
1.7
  1. จงวนลูปเพื่อแสดงสูตรคูณแม่ 3 ไล่ตั้งแต่ $3 \times 1$ จนถึง $3 \times 12$ โดยจะได้ผลลัพธ์ดังนี้
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
:
:
:
3 * 12 = 36
# วนลูปค่า index i จาก 1 ถึง 12
for i in range(1, 13):
    print(3, "*", i, "=", 3 * i)
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
3 * 10 = 30
3 * 11 = 33
3 * 12 = 36

ลูปซ้อนลูป (loop embedding)

# วนลูป index m เพื่อไล่แม่สูตรคูณจากแม่ 3 ถึงแม่ 5
for m in range(3, 6):
    print('Multiplication of', m)
    # วนลูป index i เพื่อไล่ตัวคูณจาก 1 ถึง 12
    for i in range(1, 13):
        print(m, '*', i, '=', m * i)
    # พิมพ์บรรทัดใหม่คั่นระหว่างแม่
    print()
Multiplication of 3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
3 * 10 = 30
3 * 11 = 33
3 * 12 = 36

Multiplication of 4
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
4 * 10 = 40
4 * 11 = 44
4 * 12 = 48

Multiplication of 5
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
5 * 11 = 55
5 * 12 = 60

แบบฝึกหัด 6.3

  1. จงเขียนโปรแกรมเพื่อไล่แม่สูตรคูณจากแม่ 11 ถึงแม่ 15 โดยแต่ละแม่จะคูณกับตัวเลขตั้งแต่ 1 จนถึง 12
for m in range(11,16):
    for i in range(1,13):
        print(f"{m} * {i} = {m * i}")
11 * 1 = 11
11 * 2 = 22
11 * 3 = 33
11 * 4 = 44
11 * 5 = 55
11 * 6 = 66
11 * 7 = 77
11 * 8 = 88
11 * 9 = 99
11 * 10 = 110
11 * 11 = 121
11 * 12 = 132
12 * 1 = 12
12 * 2 = 24
12 * 3 = 36
12 * 4 = 48
12 * 5 = 60
12 * 6 = 72
12 * 7 = 84
12 * 8 = 96
12 * 9 = 108
12 * 10 = 120
12 * 11 = 132
12 * 12 = 144
13 * 1 = 13
13 * 2 = 26
13 * 3 = 39
13 * 4 = 52
13 * 5 = 65
13 * 6 = 78
13 * 7 = 91
13 * 8 = 104
13 * 9 = 117
13 * 10 = 130
13 * 11 = 143
13 * 12 = 156
14 * 1 = 14
14 * 2 = 28
14 * 3 = 42
14 * 4 = 56
14 * 5 = 70
14 * 6 = 84
14 * 7 = 98
14 * 8 = 112
14 * 9 = 126
14 * 10 = 140
14 * 11 = 154
14 * 12 = 168
15 * 1 = 15
15 * 2 = 30
15 * 3 = 45
15 * 4 = 60
15 * 5 = 75
15 * 6 = 90
15 * 7 = 105
15 * 8 = 120
15 * 9 = 135
15 * 10 = 150
15 * 11 = 165
15 * 12 = 180
  1. จงเขียนโปรแกรมเพื่อแสดงจัตุรัสตัวเลข 1 ถึง 9 โดยใช้ลูปซ้อนกัน 2 ลูป ซึ่งผลลัพธ์จะเป็นดังต่อไปนี้
1 2 3
4 5 6
7 8 9
for i in range(0, 3):
    for j in range(1, 4):
        print(3 * i + j, '', end='')
    print()
1 2 3 
4 5 6 
7 8 9 
  1. จงเขียนโปรแกรมเพื่อแสดงจัตุรัสตัวเลข 1 ถึง 27 โดยใช้ลูปซ้อนกัน 3 ลูป ซึ่งผลลัพธ์จะเป็นดังนี้
1 2 3
4 5 6
7 8 9

10 11 12
13 14 15
16 17 18

19 20 21
22 23 24
25 26 27

หมายเหตุ: เราสามารถระบุให้คำสั่ง print ไม่ต้องขึ้นบรรทัดใหม่หลังจากพิมพ์ค่าออกหน้าจอได้ด้วยการระบุ end='' ไว้ในวงเล็บของ print ครับ

for i in range(3):
    for j in range(3):
        for k in range(3):
            print(9 * i + 3 * j + k + 1, '', end='')
        print()
    print()
1 2 3 
4 5 6 
7 8 9 

10 11 12 
13 14 15 
16 17 18 

19 20 21 
22 23 24 
25 26 27 

กิจกรรม 7: การกำหนดเงื่อนไข

if <เงือนไข>:
    <กระบวนการ>
salary = 50000

if salary > 10000:
    print('Hurray!')
Hurray!

รูปแบบของเงื่อนไข

เครื่องหมาย ความหมาย ตัวอย่าง
< น้อยกว่า 3 < 5
> มากกว่า 5 > 3
== เท่ากับ my_salary == your_salary
!= ไม่เท่ากับ my_salary != your_salary
>= มากกว่าหรือเท่ากับ my_salary >= your_salary
<= น้อยกว่าหรือเท่ากับ my_salary <= your_salary
print(0.5 > 0.3)        # True
print(0.25 < -1.0)      # False
print(1.25 == 1.25)     # True
print(1.30 != -0.78)    # True
True
False
True
True
print('hello' == 'hello')       # True
print('hello' != 'world')       # True
print('hello' < 'alphabet')     # False -- คอมพิวเตอร์เรียงลำดับข้อความตามตัวอักษร
True
True
False
ตัวเชื่อม ความหมาย ตัวอย่าง
and และ a == b and x == y
or หรือ a != b or c != d
not ไม่ not (a > b)
( ) วงเล็บ (a == b) and not (c > d)
v1 = 100
v2 = 200
v3 = 300

print(v1 == v2 and v2 == v3)                       # False and False = False
print(v1 + v2 == v3 or v2 + v3 == v1)              # True or False = True
print(not(v1 == v2 and v2 == v3) or v1 == v2)      # not(False and False) or False = True
False
True
True

แบบฝึกหัด 7.1

  1. จงตั้งเงื่อนไขเพื่อให้คอมพิวเตอร์พิมพ์ข้อความว่า 'You are tall.' ถ้าหากว่าความสูงในตัวแปร my_height มากกว่า 170
my_height = 175

if my_height <= 170:
    print('You are tall.')
  1. จงตั้งเงื่อนไขเพื่อให้คอมพิวเตอร์พิมพ์ข้อความว่า 'You are weathy and tall.' ถ้าหากว่าเงินเดือนในตัวแปร my_salary มากกว่า 10000 และความสูงในตัวแปร my_height มากกว่า 170
my_salary = 15001
my_height = 175

if my_height > 170 and my_salary > 15000:
    print('You are wealthy and tall.')
You are wealthy and tall.
  1. จงตั้งเงื่อนไขเพื่อควบคุมการพิมพ์ความสูงของนักเรียนแต่ละคน โดยจะพิมพ์ออกมาเฉพาะคนที่มีความสูงมากกว่า 160 เซนติเมตรเท่านั้น [หมายเหตุ: จะสังเกตว่าโจทย์ข้อนี้จะใช้ทั้งลูปฟอร์และการตั้งเงื่อนไขประกอบกันได้ด้วย]
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

for height in student_heights:
    if height > 160:
        print(height)
163.5
167.0
161.25
170.0
  1. จงตั้งเงื่อนไขเพื่อควบคุมการพิมพ์ชื่อของนักเรียนแต่ละคนและความสูงออกมา โดยจะพิมพ์ออกมาเฉพาะคนที่ชื่อนำหน้าด้วยตัวอักษรอื่น**ที่ไม่ใช่** 'A' และ**ไม่ใช่** 'C' และมีความสูงมากกว่า 160 เซนติเมตรเท่านั้น
student_names = ['Arm', 'Bobby', 'Cathy', 'Dorothy', 'Emily']
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

for i in range(len(student_names)):
    if student_heights[i] > 160:
        print(student_names[i], ':', student_heights[i])
Arm : 163.5
Cathy : 167.0
Dorothy : 161.25
Emily : 170.0

การรับข้อมูลผ่านคีย์บอร์ด

my_name = input('Enter your name: ')      # ใส่ข้อความเตือนผู้ใช้ที่ตรงนี้
print('Hello,', my_name)
Hello, iiii
my_salary_str = input('Enter your salary: ')
my_salary = int(my_salary_str)           # ต้องแปลงข้อความให้เป็นจำนวนเต็มก่อน ถึงจะเปรียบเทียบได้
if my_salary > 10000:
    print('Your salary is quite high.')
Your salary is quite high.

การกำหนดเงื่อนไขที่มี 2 ทางเลือก

if <เงือนไข> :
    <กระบวนการ 1>
else:
    <กระบวนการ 2>
salary = 5000

if salary > 10000:
    print('Hurray!')
else:
    print('Poorly you.')
Poorly you.

แบบฝึกหัด 7.2

จงตั้งเงื่อนไขเพื่อควบคุมการพิมพ์ชื่อของนักเรียนแต่ละคนและความสูงออกมา โดยจะพิมพ์ออกมาเฉพาะคนที่ชื่อนำหน้าด้วยตัวอักษรอื่นที่**ไม่ใช่** 'A' และ**ไม่ใช่** 'C' และมีความสูงมากกว่า 160 เซนติเมตรเท่านั้น ไม่เช่นนั้นก็ให้พิมพ์เฉพาะชื่อนักเรียนออกมาเท่านั้น

student_names = ['Arm', 'Bobby', 'Cathy', 'Dorothy', 'Emily']
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

for i in range(len(student_names)):
    if student_names[i][0] != 'A' and student_names[i][0] != 'C' and student_heights[i] > 160:
        print(student_names[i], ':', student_heights[i])
    else:
        print(student_names[i])
Arm
Bobby
Cathy
Dorothy : 161.25
Emily : 170.0

การกำหนดเงื่อนไขแบบซับซ้อน

if <เงือนไข 1> :
    <กระบวนการ 1>
elif <เงือนไข 2> :
    <กระบวนการ 2>
elif <เงือนไข 3> :
    <กระบวนการ 3>
    :
    :
    :
else:
    <กระบวนการสุดทาย>
score = int(input('Enter your score: '))

if score >= 80:           # score >= 80
    grade = 4
elif score >= 70:         # 70 <= score <= 79
    grade = 3
elif score >= 60:         # 60 <= score <= 69
    grade = 2
elif score >= 50:         # 50 <= score <= 59
    grade = 1
else:                     # score < 50
    grade = 0

print('Your grade =', grade)
Your grade = 2

คำสั่งออกจากลูป (break) และคำสั่งกระโดดไปสมาชิกตัวถัดไป (continue)

student_names = ['Arm', 'Bobby', 'Cathy', 'Dorothy', 'Emily']
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

for i in range(len(student_heights)):
    # พิมพ์ชื่อนักเรียนและความสูง
    print(student_names[i], ':', student_heights[i])
    # ถ้าความสูงของนักเรียนคนนั้น > 165 เซนติเมตร ให้ออกจากลูป
    if student_heights[i] > 165.0:
        break
        
print('That is all.')
Arm : 163.5
Bobby : 150.0
Cathy : 167.0
That is all.
student_names = ['Arm', 'Bobby', 'Cathy', 'Dorothy', 'Emily']
student_heights = [163.5, 150.0, 167.0, 161.25, 170.0]

for i in range(len(student_heights)):
    # พิมพ์ชื่อนักเรียนและความสูง
    print(student_names[i], ':', student_heights[i], end='')
    # ถ้าชื่อนักเรียนขึ้นต้นด้วยตัว A หรือตัว C ให้ตัดจบ แล้วไปสมาชิกตัวถัดไปทันที
    if student_names[i][0] == 'A' or student_names[i][0] == 'C':
        print()
        continue
    print(' --> blacklisted')
Arm : 163.5
Bobby : 150.0 --> blacklisted
Cathy : 167.0
Dorothy : 161.25 --> blacklisted
Emily : 170.0 --> blacklisted

แบบฝึกหัด 7.3

จงเขียนโปรแกรมเพื่อแสดงรายการนักเรียนที่ได้เกรดตำกว่า 4 ถ้านักเรียนคนใดได้เกรดต่ำกว่า 3 ให้พิมพ์ข้อความเตือน 'warning' ที่หลังเกรด และให้โปรแกรมหยุดการทำงานเมื่อพบนักเรียนที่ได้เกรดตำกว่า 2

student_names = ['Arm', 'Bobby', 'Cathy', 'Dorothy', 'Emily']
student_scores = [86, 78, 54, 65, 34]

for i in range(len(student_names)):
    grade = 0
    
    # คำนวณเกรดของนักเรียน เก็บใส่ตัวแปร grade ไว้
    if student_scores[i] >= 80:
        grade = 4
    elif student_scores[i] >= 70:
        grade = 3
    elif student_scores[i] >= 60:
        grade = 2
    elif student_scores[i] >= 50:
        grade = 1
    else:
        grade = 0
    
    # ถ้าพบว่านักเรียนได้เกรด 4 ให้กระโดดข้ามไปนักเรียนคนถัดไป โดยใช้คำสั่ง continue
    if grade == 4:
        continue
    
    # พิมพ์ชื่อนักเรียนและเกรด โดยที่ยังไม่ต้องขึ้นบรรทัดใหม่
    print(student_names[i], ':', grade, end='')
    
    # ถ้าพบนักเรียนคนใดได้เกรดตำกว่า 3 ให้พิมพ์ข้อความเตือนว่า 'warning' และขึ้นบรรทัดใหม่
    if grade < 3:
        print(' warning')
        continue
    else:
        print()
    
    # หากพบนักเรียนที่ได้เกรดต่ำกว่า 2 ให้ออกจากลูปทันที โดยใช้คำสั่ง break
    if grade < 2:
        break
Bobby : 3
Cathy : 1 warning
Dorothy : 2 warning
Emily : 0 warning

กิจกรรม 8: โจทย์เสริมทักษะ

  1. จงเขียนโปรแกรมเพื่อรับจำนวน $ n $ และพิมพ์พิระมิดชิดซ้ายที่มีขนาดเท่ากับ $ n $ เช่น
Enter the size of the left-angle pyramid (n): 5
*
**
***
****
*****
n = input("Enter the size of the left-angle pyramid (n): ")
for i in range(int(n)+1):
    print("*" * i)
*
**
***
****
*****
  1. จงเขียนโปรแกรมเพื่อรับจำนวน $ h $ และพิมพ์พิระมิดที่มีความสูงเท่ากับ $ h $ เช่น
Enter the height of the pyramid (h): 5
    *
   ***
  *****
 *******
*********
n = int(input("Enter the height of the pyramid (h): "))
for i in range(n):
    for j in range(n-i):
        print(" ", end="")
    for k in range(i*2+1):
        print("*", end="")
    print()
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
  1. จงเขียนโปรแกรมเพื่อรับจำนวน $ h $ และพิมพ์รูปข้าวหลามตัดที่มีความสูงเท่ากับ $ 2h - 1 $ เช่น
Enter the height of club (h): 5
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
n = 5
for i in range(n):
  # space
  for j in range(n-i):
    print(" ", end="")
  # star
  for j in range(i*2+1):
    print("*", end="")
  print()
for i in range(n, -1, -1):
  # space
  for j in range(n-i):
    print(" ", end="")
  # star
  for j in range(i*2+1):
    print("*", end="")
  print()
 
     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *
  1. จงเขียนโปรแกรมเพื่อรับจำนวน $ h $ และพิมพ์รูปข้าวหลามตัดกลวงที่มีความสูงเท่ากับ $ 2h - 1 $ เช่น
Enter the height of hollow club (h): 5
    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *
n = int(input("Enter the height of hollow club (h): "))
fp = lambda n, i: print(f"{' '*(n-i+1)}*{' '*(i*2-1)}{'*' if i != 0 else ''}")
for i in range(n):
  fp(n,i)
for i in range(n, -1, -1):
  fp(n,i)

      *
     * *
    *   *
   *     *
  *       *
 *         *
  *       *
   *     *
    *   *
     * *
      *

แหล่งที่มา
  • https://tinyurl.com/y9wmkgj5