Basic I/O, Data Types, Variables,
Operators, Expressions, Statements
ภาควิชาวิศวกรรมคอมพิวเตอร์
จุฬาลงกรณ์มหาวิทยาลัย
๒๕๖๒
โครงสร้างโปรแกรมและลักษณะการทำงาน
import matplotlib.pyplot
as plt
import math
n = int(input())
# data points
if n < 10:
n = 10
x = []
y = []
for k
in range(n):
x.append(k*16*math.pi/n)
y.append(0.1*k*math.sin(x[k]))
plt.plot(x, y)
plt.show()
ต้องเริ่มคำสั่งให้อยู่ในแนวเดียวกันกับคำสั่งอื่นในกลุ่ม
ทำงานทีละคำสั่ง
จากบนลงล่าง
บางคำสั่งก็
ทำงานเป็นวงวน
บางคำสั่งก็เป็น
แบบเลือกทำ
3
Basic Data Types: String and Number
•
String
–
"Hello"
–
"Hello Python"
–
"12345"
–
""
•
Number
–
integer
•
1234, 0
–
floating point
•
-1234.0, 1.5E-15
←
1.5 ×
10
-15
'Hello'
'Hello Python'
'12345'
''
4
Operator: plus
•
ข้อความ
บวก
กัน คือข้อความ
ต่อ
กัน
–
"Hello"
+
" "
+
"!"
ได้
"Hello !"
–
"1"
+
"1"
ได้
"11"
•
จำนวน
บวก
กัน
-
1
+
1
ได้
2
-
1
+
1.0
ได้
2.0
•
ข้อความบวกกับจำนวนไม่ได้
–
"1"
+
1
←
ผิด
5
print( … ) แสดงผลทางจอภาพ
6
ตัวแปร (Variables)
•
ตัวแปรเป็นที่เก็บข้อมูล
–
ต้องมีชื่อกำกับ
–
เปลี่ยนค่าในที่เก็บได้
name
= "Python"
lang
= name
นำค่า
"Python"
เก็บในตัวแปร
name
นำข้อมูลใน
name
เก็บในตัวแปร
lang
ทำให้
lang
กับ
name
เก็บค่าเหมือนกัน
a = 1 #
a = 1
b = 2 # a = 1;
b = 2
c = a # a = 1; b = 2;
c = 1
d = c + b # a = 1; b = 2; c = 1;
d = 3
d = d + 5 # a = 1; b = 2; c = 1;
d = 8
หลายคนเขียน
1+2 = a
ผิด
!!!
7
ชื่อตัวแปร
•
ประกอบด้วยตัวอักษร ตัวเลข หรือเครื่องหมายขีดเส้นใต้
•
ตัวอังกฤษใหญ่กับเล็กไม่เหมือนกัน
•
ห้ามขึ้นต้นชื่อด้วยดัวเลข
•
ไม่ซ้ำกับคำสงวนของภาษา
and
as
assert
break
class
continue
def
del
elif
else
except
exec
finally for
from
global
if
import
in
is
lambda
nonlocal not
or
pass
raise
return try
while
with
yield
True
False
None
first_name
= "John"
last_name
= "Wick"
8
Basic Data Types
•
str
ข้อความ
•
int
จำนวนเต็ม
•
float
จำนวนจริง (มีจุดทศนิยม)
•
bool
ค่าจริงกับเท็จเท่านั้น
(True
กับ
False)
•
list
ชุดข้อมูล เก็บเรียงเป็นลำดับ
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
["SU", "MO", "TU", "WE", "TH", "FR", "SA"]
[6230012021, [2110101, 2301107]]
[ ]
9
ตัวอย่าง: Variables & Data Types
first_name
= "Ranee" #
str
last_name
= "Campen" #
str
aka = "Bella" #
str
age = 29 #
int
height = 1.65 #
float
is_single
= True #
bool
birth_date
= [24, 12, 1989] #
list
tv_series
= ["Roy Marn", "Plerng
Boon",
"Bubphe
Sanniwat", "Krong
Kam"]
print("Name:", first_name, last_name)
print("Age:", age)
print("Aka:", aka, "or", aka[0:4:1])
d = birth_date[0]
m = birth_date[1]
y = birth_date[2]
print("Born:", str(d)+"/"+str(m)+"/"+str(y))
จะได้ศึกษาการจัดการข้อมูล
ประเภทต่าง ๆ ต่อไป
10
Type Conversions
•
ข้อมูลส่วนใหญ่แปลงเป็น
string
ได้ด้วย
str
•
ข้อมูลบางอย่างก็อาจแปลงเป็น
int
กับ
float
ได้
11
input() รับสตริงจากแป้นพิมพ์
Python
is a very easy language.
We use
Python
in our class.
Hello
Python
.
output
หลังจากสั่งทำงานแล้วกดคำว่า
Python
ก็จะได้ผลเป็น
input()
รอรับข้อมูลที่ป้อนทางคีย์บอร์ด
พอกด enter
ข้อมูลนั้นจะกลายเป็นสตริง
นำมาเก็บในตัวแปร
name
12
รับจำนวน คือ รับสตริงแล้วเปลี่ยนเป็นจำนวน
Perimeter of square = 48.0
output
หลังจากสั่งทำงานแล้วกด
12
ก็จะได้ผลเป็น
d
=
float(
input()
)
...
x
=
input()
d =
float(
x
)
...
d
=
int(
input()
)
...
x
=
input()
d =
int(
x
)
...
รับจำนวนจริง
รับจำนวนเต็ม
13
Basic Arithmetic Operations
+
บวก
-
ลบ
*
คูณ
/
หาร
//
หารปัดเศษ
%
เศษจากการหาร
**
ยกกำลัง
=
กาให้ค่า
a = 5 +
2 # 7
b = 5 -
2 # 3
c = 5 *
2 # 10
d = 5 **
2 # 25
e = 5 /
2 # 2.5
f = 5 //
2 # 2
g = 5 %
2 # 1
a,b,c
=
c,a,b
# a = 10
# b = 7
# c = 3
a,b
=
b,a
#
สลับค่า
a
กับ
b
14
Tips
a = float(input())
a = -a #
เปลี่ยนจำนวนลบเป็นบวก จำนวนบวกเป็นลบ
b = int(a) #
ปัดเศษของ
a
ทิ้ง
c = int(a + 0.5) #
ปัดเศษของ
a
แบบมีขึ้นหรือลง
d = a –
int(a) #
ค่าหลังจุดทศนิยมของ
a
d = a % 1 #
ค่าหลังจุดทศนิยมของ
a
e = b % 10 #
เลขหลักหน่วยของ
b
f = b // 10 % 10 #
เลขหลักสิบของ
b
g = b // 10**4 % 10 #
เลขหลักหมื่นของ
b
h = input() # h
เก็บสตริง
h = int(h) # h
เก็บจำนวนเต็ม (ใช้ตัวแปรซ้ำได้)
15
แบบฝึกหัด: รับเซลเซียส แสดงฟาเรนไฮต์
0
32
Input
Output
100
312
16
Augmented Assignments
a = 10
a = a + 5 # 15
a = a -
1 # 14
a = a * 2 # 28
a = a % 10 # 8
a = a ** 2 # 64
a = a // 10 # 6
a = 10
a += 5 # 15
a -= 1 # 14
a *= 2 # 28
a %= 10 # 8
a **= 2 # 64
a //= 10 # 6
17
math module
import math
degree = float(input())
radian = degree * 3.14159 / 180
radian = degree * math.pi
/ 180
radian = math.radians(degree)
s = math.sin(radian)
c = math.cos(radian)
g = math.log(
1E100, 10 )
# g = 100.0
มีฟังก์ชันทางคณิตศาตร์
มากมายให้ใช้ใน
math
module
18
Built-in Functions
a = abs(-2)
# a = 2
b = round(2/3, 2)
# b = 0.67
c = max([4,1,5,3])
# c = 5
d = min([4,1,5,3])
# d = 1
e = sum([4,1,5,3])
# e = 13
f = len([4,1,5,3])
# f = 4
g = str(1234) # g = "1234"
h = int("123")
# h = 123
j = float("-123.4")
# j = -123.4
k = input()
print(a,b,c)
จะได้เรียนวิธีการเขียนฟังก์ชันใหม่ ๆ ไว้ใช้เองต่อไป
19
ใช้ฟังก์ชันซ้อน ๆ กันได้
print("x5 = " + str(1 + abs(int(input()))))
เขียนซ้อนมากชั้นเกินไป จะเข้าใจยาก
20
Operator Precedence: 2 + 3 * 4 = ?
•
ลำดับการคำนวณ จากก่อนไปหลังเป็นดังนี้
–
ในวงเล็บ
–
ยกกำลัง
–
ติดลบ
–
* / // %
–
บวก และ ลบ
–
ถ้าพบหลายตัวที่สำคัญเท่ากัน ให้ทำตัวซ้ายไปขวา
(ยกเว้นยกกำลัง ทำขวามาซ้าย เช่น
2**3**2 = 2**9 = 512
)
2 * 3 + 8 / -(2 –
4) –
2**2**3
2 * 3 + 8 / -( -2 ) –
2**2**3
2 * 3 + 8 / -( -2 ) –
2**8
2 * 3 + 8 / -( -2 ) –
256
2 * 3 + 8 / 2 -
256
6 + 8 / 2 -
256
6 + 4.0 -
256
10.0 -
256
PEMDAS
:
P
arentheses
E
xponential
M
ultiply
D
ivide
A
dd
S
ubstract
21
ตัวอย่าง: คำนวณพื้นที่และเส้นรอบวงของวงกลม
Area = 63.62
Circumference = 28.27
output
หลังจากสั่งทำงานแล้วป้อน
4.5
จะได้ผลเป็น
22
เลขประจำตัวนิสิต
6 2 3 0 0 1 2 0 2 1
ปีที่เริ่มการศึกษา
21 คณะวิศวกรรมศาสตร์
22 คณะอักษรศาสตร์
23 คณะวิทยาศาสตร์
24 คณะรัฐศาสตร์
…
23
ตัวอย่าง: รหัสนิสิต → คณะอะไร เข้าปีอะไร ระดับใด
Student ID: 6230012021
Faculty code: 21
Enrollment year: 2562
Academic degree: 3
output
หลังจากสั่งทำงานแล้วป้อน
6230012021
จะได้ผลเป็น
24
แสดงเลขประจำตัวนิสิตทีละหลัก หลักละบรรทัด
เครื่องหมาย
;
คั่นคำสั่งที่ต้องการเขียนต่อกันในบรรทัดเดียวกัน
25
แบบฝึกหัด: Stirling Formula
26
แบบฝึกหัด: : รากของ ax2+bx+c = 0
รับ
a b c
จากแป้นพิมพ์
คำนวณและแสดงสองรากจากสูตร
27