Tập huấn ngôn ngữ lập trình Python
Cập nhật chương trình GDPT 2018
Sở Giáo dục và Đào tạo An Giang
Từ 04/10/2022 đến 07/10/2022
Nội dung chính
Tập huấn NNLT Python
2
I. Giới thiệu tổng quan
Tập huấn NNLT Python
3
I. Giới thiệu tổng quan
Tập huấn NNLT Python
4
This Photo by Unknown Author is licensed under CC BY-NC
I. Giới thiệu tổng quan
Tập huấn NNLT Python
5
I. Giới thiệu tổng quan
Tập huấn NNLT Python
6
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
7
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
8
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
9
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
10
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
11
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
12
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
13
Bấm vào nút Next
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
14
Bấm vào nút Next
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
15
Bấm vào nút Next
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
16
Bấm vào nút Install
I. Giới thiệu tổng quan (cài đặt)
Tập huấn NNLT Python
17
Cửa sổ Python Shell
Khu vực xem và điểu khiển các file, project của Python
Cửa sổ soạn thảo lập trình
Nút Run (thực thi chương trình)
I. Giới thiệu tổng quan (cài đặt)
Các thao tác cơ bản trên PyCharm:
Tập huấn NNLT Python
18
II. Cú pháp cơ bản
Tập huấn NNLT Python
19
II. Cú pháp cơ bản
Tập huấn NNLT Python
20
II. Cú pháp cơ bản
Tập huấn NNLT Python
21
Toán tử | Ý nghĩa |
+, -, *, / | Cộng, trừ, nhân, chia |
// | Chia lấy phần nguyên |
% | Chia lấy dư |
** | Lũy thừa |
II. Cú pháp cơ bản
Tập huấn NNLT Python
22
Toán tử | Ý nghĩa |
and, or, not | Phép toán logic |
<, <=, >, >=, ==, != | Phép toán quan hệ |
II. Cú pháp cơ bản
Tập huấn NNLT Python
23
II. Cú pháp cơ bản
Tập huấn NNLT Python
24
II. Cú pháp cơ bản
a = 10; b = 3
c = a + b + \
10 * a - b / 4 - \
5 + 3 * a
print(c)
Tập huấn NNLT Python
25
II. Cú pháp cơ bản
import <tên thư viện>
<tên thư viện>.<tên hàm>
import math
x = math.sqrt(2)
Tập huấn NNLT Python
26
Cách khác:
from math import sqrt
x = sqrt(2)
II. Cú pháp cơ bản
Tập huấn NNLT Python
27
Hàm | Ý nghĩa |
abs(x) | Tính |x| |
ceil(x) | Trả về số nguyên nhỏ nhất, lớn hơn hoặc bằng giá trị x |
round(x, y) | Làm tròn số x với y chữ số thập phân |
gcd(x, y) | Tính ước chung lớn nhất của hai số nguyên x và y |
sqrt(x) | Tính căn bậc 2 của x |
log(x) | Tính lnx |
exp(x) | |
Ngoài hàm abs, round là có thể sử dụng trực tiếp, các hàm còn lại cần phải khai báo thư viện math
III. Nhập xuất dữ liệu
a = 'Học Python' # biến a có kiểu xâu
a = 5 # biến a đổi sang kiểu số nguyên
a = 5.5 # biến a đổi sang kiểu số thực
a = True # biến a đổi sang kiểu logic
Tập huấn NNLT Python
28
III. Nhập xuất dữ liệu
a = 'Học Python'; print(type(a))
a = 5; print(type(a))
a = 5.5; print(type(a))
a = True; print(type(a))
Tập huấn NNLT Python
29
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
III. Nhập xuất dữ liệu
Tập huấn NNLT Python
30
III. Nhập xuất dữ liệu
print('*')
print('**')
print('***')
print('****')
print('*****’)
x = 'Chao mung ban den voi Python'
print(x)
Tập huấn NNLT Python
31
*
**
***
****
*****
Chao mung ban den voi Python
III. Nhập xuất dữ liệu
print('a','b','c')
print('x+y=',4+5)
print('*\n**\n***\n****\n*****')
Tập huấn NNLT Python
32
a b c
x+y= 9
*
**
***
****
*****
III. Nhập xuất dữ liệu
print(<danh sách các kết quả>, sep=[nội dung giữa các kết quả])
print('a','b','c',sep='')
print('a','b','c',sep='--')
print('a','b','c',sep=' ')
print('a','b','c',sep=',')
Tập huấn NNLT Python
33
abc
a--b--c
a b c
a,b,c
III. Nhập xuất dữ liệu
print(<danh sách các kết quả>, end=[nội dung cuối mỗi kết quả])
print('a',end=' ')
print('b',end='+')
print('c',end='\n')
print('Tu hoc')
print('Python')
Tập huấn NNLT Python
34
a b+c
Tu hoc
Python
III. Nhập xuất dữ liệu
Sử dụng hàm format(giá trị, "chuỗi định dạng")
a = 3.1415
print(format(a, ".1f"))
# Định dạng kiểu số thực với 1 số lẻ
Tập huấn NNLT Python
35
3.1
III. Nhập xuất dữ liệu
<tên biến> = input()
print('Moi nhap mot day ky tu:')
x=input()
print('Day ky tu duoc nhap la:',x)
Tập huấn NNLT Python
36
Moi nhap mot day ky tu:
Truong THPT chuyen Thoai Ngọc Hau
Day ky tu duoc nhap la: Truong THPT chuyen Thoai Ngọc Hau
III. Nhập xuất dữ liệu
x=input('Moi nhap mot day ky tu:')
print('Day ky tu duoc nhap la:',x)
Tập huấn NNLT Python
37
Moi nhap mot day ky tu:Truong THPT chuyen Thoai Ngoc Hau
Day ky tu duoc nhap la: Truong THPT chuyen Thoai Ngoc Hau
III. Nhập xuất dữ liệu
a=int(input('Nhap so a:'))
b=int(input('Nhap so b:'))
print('Tong của a va b la:',a+b)
Tập huấn NNLT Python
38
Nhap so a:7
Nhap so b:9
Tong của a va b la: 16
III. Nhập xuất dữ liệu
Tập huấn NNLT Python
39
Cấu trúc điều khiển
Tập huấn NNLT Python
40
IV. Cấu trúc điều khiển
Tập huấn NNLT Python
41
IV. Cấu trúc điều khiển
if <điều kiện>:
<khối lệnh>
if <điều kiện>:
<khối lệnh 1>
else:
<khối lệnh 2>
Tập huấn NNLT Python
42
IV. Cấu trúc điều khiển
if <điều kiện 1>:
<khối lệnh 1>
else:
if <điều kiện 2>:
<khối lệnh 2>
else:
<khối lệnh 3>
if <điều kiện 1>:
if <điều kiện 2>:
<khối lệnh 1>
else:
<khối lệnh 2>
else:
<khối lệnh 3>
Tập huấn NNLT Python
43
Nếu có nhiều trường hợp, ta có thể sử dụng các câu lệnh if lồng vào nhau.
IV. Cấu trúc điều khiển
Tập huấn NNLT Python
44
a=int(input('Nhập số a:'))
b=int(input('Nhập số b:'))
if a != b:
if a > b:
print("a > b")
else:
print("a < b")
else:
print("a = b")
a=int(input('Nhập số a:'))
b=int(input('Nhập số b:'))
if a == b:
print("a = b")
else:
if a > b:
print("a > b")
else:
print("a < b");
IV. Cấu trúc điều khiển
Có thể thay if … else if … else … bằng if … elif … else …:
Tập huấn NNLT Python
45
a=int(input('Nhập số a:'))
b=int(input('Nhập số b:'))
if a == b:
print("a = b")
elif a > b:
print("a > b")
else:
print("a < b");
a=int(input('Nhập số a:'))
b=int(input('Nhập số b:'))
if a == b:
print("a = b")
else:
if a > b:
print("a > b")
else:
print("a < b");
IV. Cấu trúc điều khiển
Tập huấn NNLT Python
46
IV. Cấu trúc điều khiển
range(100) 🡪 dãy từ 0 đến 99
range(2,10) 🡪 dãy liên tục từ 2 đến 9
range(2,10,2) 🡪 dãy các số 2, 4, 6, 8
range(100,0,-1) 🡪 dãy liên tục từ 100 đến 1
Tập huấn NNLT Python
47
IV. Cấu trúc điều khiển
for <tên biến> in [tập các giá trị]:
<khối lệnh>
for x in 1, 2, 5:
print(x)
Tập huấn NNLT Python
48
1
2
5
IV. Cấu trúc điều khiển
for x in range(3):
print('x=',x)
Tập huấn NNLT Python
49
x= 0
x= 1
x= 2
IV. Cấu trúc điều khiển
Tập huấn NNLT Python
50
IV. Cấu trúc điều khiển
Câu lệnh while:
while <điều kiện>:
<khối lệnh>
Sơ đồ khối
Tập huấn NNLT Python
51
III. Lặp với số lần lặp chưa biết trước - while
n = 2
while n<=5:
print(n)
n = n + 1
Tập huấn NNLT Python
52
2
3
4
5
🖎 Chú ý:
IV. Cấu trúc điều khiển
for x in 1, 2, 3, 4, 5:
if x%2==0:
continue
print('x =',x,'là số lẻ')
Tập huấn NNLT Python
53
x = 1 là số lẻ
x = 3 là số lẻ
x = 5 là số lẻ
IV. Cấu trúc điều khiển
for x in 1, 2, 3, 4, 5:
if x == 4:
break
print('x =',x)
Tập huấn NNLT Python
54
x = 1
x = 2
x = 3
IV. Cấu trúc điều khiển
for x in range(3):
for y in range(6):
if y == 3:
break
print('x, y:',x,y,sep=' ')
Tập huấn NNLT Python
55
x, y: 0 0
x, y: 0 1
x, y: 0 2
x, y: 1 0
x, y: 1 1
x, y: 1 2
x, y: 2 0
x, y: 2 1
x, y: 2 2
IV. Cấu trúc điều khiển
Tập huấn NNLT Python
56
�V. Kiểu dữ liệu danh sách (list)
Tập huấn NNLT Python
57
V. Kiểu dữ liệu danh sách (list)
<biến danh sách> = [phần tử 0, phần tử 1, ..., phần tử n-1]
list1 = [] # khai báo danh sách rỗng
list2 = ['Toán','Lý','Hóa','Sinh','Tin'] # ds gồm 5 phần tử
list3 = [1, 2, 3, 4, 5,'Toán','Lý','Hóa'] # ds gồm 8 phần tử
Tập huấn NNLT Python
58
V. Kiểu dữ liệu danh sách (list)
Tập huấn NNLT Python
59
Phần tử: | P | Y | T | H | O | N |
Chỉ số: | 0 | 1 | 2 | 3 | 4 | 5 |
Chỉ số âm: | -6 | -5 | -4 | -3 | -2 | -1 |
Kết quả:
Danh sách a: ['Toán', 'Lý', 'Hóa', 'Sinh', 'Tin']
a[0]: Toán
a[1]: Lý
a[-1]: Tin
a[-2]: Sinh
a = ['Toán','Lý','Hóa','Sinh','Tin'] # ds gồm 5 phần tử
print('Danh sách a:',a)
print('a[0]:',a[0])
print('a[1]:',a[1])
print('a[-1]:',a[-1])
print('a[-2]:',a[-2])
V. Kiểu dữ liệu danh sách (list)
list_a = []
for i in range(100):
list_a.append(i)
Tập huấn NNLT Python
60
V. Kiểu dữ liệu danh sách (list)
<danh sách> = [<biểu thức> for <phần tử> in <tập giá trị>]
a = [i for i in range(6)]
b = [i*i for i in range(6)]
c = [0 for i in range(6)]
d = [2*i for i in (1, 2, 3)]
print(a)
print(b)
print(c)
print(d)
Tập huấn NNLT Python
61
[0, 1, 2, 3, 4, 5]
[0, 1, 4, 9, 16, 25]
[0, 0, 0, 0, 0, 0]
[2, 4, 6]
V. Kiểu dữ liệu danh sách (list)
<danh sách> = [<biểu thức> for <phần tử> in <tập giá trị> if <điều kiện>]
a = [i for i in range(6) if i%2==0]
b = [i*i for i in range(6) if i%2==0]
c = [0 for i in range(6) if i%2==0]
d = [2*i for i in (1, 2, 3) if i%2==0]
print(a)
print(b)
print(c)
print(d)
Tập huấn NNLT Python
62
[0, 2, 4]
[0, 4, 16]
[0, 0, 0]
[4]
V. Kiểu dữ liệu danh sách (list)
a = ['Toán','Lý','Hóa','Sinh','Tin']
print(len(a))
b = []
print(len(b))
print(len(range(9)))
Tập huấn NNLT Python
63
5
0
9
V. Kiểu dữ liệu danh sách (list)
a = [1, 1, 2, 3, 5]
print('Giá trị nhỏ nhất:',min(a))
print('Giá trị lớn nhất:',max(a))
Tập huấn NNLT Python
64
Giá trị nhỏ nhất: 1
Giá trị lớn nhất: 5
V. Kiểu dữ liệu danh sách (list)
a = [1, 2, 3, 4]
s = sum(a)
print('Tổng các phần tử:',s)
Tập huấn NNLT Python
65
Tổng các phần tử: 10
V. Kiểu dữ liệu danh sách (list)
a = [1, 2, 3, 4]
x = 1
y = 5
if x in a:
print('x thuộc a')
if y in a:
print('y thuộc a')
else:
print('y không thuộc a')
Tập huấn NNLT Python
66
x thuộc a
y không thuộc a
V. Kiểu dữ liệu danh sách (list)
Tập huấn NNLT Python
67
Phương thức | Ý nghĩa |
a.append(x) | Bổ sung phần tử x vào cuối danh sách a |
a.pop(i) | Xóa phần tử có chỉ số i trong danh sách a và đưa ra phần tử này |
a.insert(i, x) | Bổ sung phần tử x vào trước phần tử có chỉ số i trong danh sách a |
a.sort() | Sắp xếp các phần tử của danh sách a theo thứ tự không giảm |
a.clear() | Xóa toàn bộ dữ liệu của danh sách a |
a.remove(x) | Xóa phần tử x từ danh sách a |
V. Kiểu dữ liệu danh sách (list)
a = [1, 2, 3, 4]
b = [2, 3, 4, 5]
c = a + b
print(c)
Tập huấn NNLT Python
68
[1, 2, 3, 4, 2, 3, 4, 5]
V. Kiểu dữ liệu danh sách (list)
a = [1, 2, 3]
b = a*3
c = 3*a
print(b)
print(c)
Tập huấn NNLT Python
69
[1, 2, 3, 1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
V. Kiểu dữ liệu danh sách (list)
Tập huấn NNLT Python
70
VI. Kiểu dữ liệu xâu (str)
Tập huấn NNLT Python
71
VI. Kiểu dữ liệu xâu (str)
a = 'How are you?'
b = "I\'m fine, thank you!"
print(a)
print(b)
Tập huấn NNLT Python
72
How are you?
I'm fine, thank you!
VI. Kiểu dữ liệu xâu (str)
print('C:\some\name')
print('\n')
print(r'C:\some\name')
Tập huấn NNLT Python
73
C:\some
ame
C:\some\name
VI. Kiểu dữ liệu xâu (str)
Tập huấn NNLT Python
74
| T | ự |
| h | ọ | c |
| P | y | t | h | o | n |
Chỉ số | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
-13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
VI. Kiểu dữ liệu xâu (str)
s1 = 'Tự học lập trình Python’
s2 = "Học, học nữa, học mãi"
s3 = 'Ngôn ngữ lập trình "Python"'
print(type(s1))
print(type(s2))
print(s1)
print(s2)
print(s3)
Tập huấn NNLT Python
75
<class 'str'>
<class 'str'>
Tự học lập trình Python
Học, học nữa, học mãi
Ngôn ngữ lập trình "Python"
VI. Kiểu dữ liệu xâu (str)
s='abcd ef'
print('Xâu:',s)
print('Độ dài:',len(s))
Tập huấn NNLT Python
76
Xâu: abcd ef
Độ dài: 7
VI. Kiểu dữ liệu xâu (str)
s = 'abc'
n = len(s)
print(s[0],'==',s[-n])
print(s[1],'==',s[-n+1])
print(s[2],'==',s[-n+2])
print('Tất cả các ký tự trong xâu:')
for i in range(n):
print(s[i])
Tập huấn NNLT Python
77
a == a
b == b
c == c
Tất cả các ký tự trong xâu:
a
b
c
VI. Kiểu dữ liệu xâu (str)
<xâu 1> + <xâu 2> + ... + <xâu n>
s1 = 'Tự học '
s2 = 'lập trình Python'
s = s1 + s2
print(s)
Tập huấn NNLT Python
78
Tự học lập trình Python
VI. Kiểu dữ liệu xâu (str)
<biến xâu>*<số lần ghép> Hoặc <số lần ghép>*<biến xâu>
s = 'Python'
s1 = s*8
s2 = 8*s
print(s1)
print(s2)
Tập huấn NNLT Python
79
PythonPythonPythonPythonPythonPythonPythonPython
PythonPythonPythonPythonPythonPythonPythonPython
VI. Kiểu dữ liệu xâu (str)
<biến xâu>[a:b]
s = 'Python'
s1 = s[0:3]
s2 = s[1:5]
print('Xâu con từ chỉ số 0 đến 2:',s1)
print('Xâu con từ chỉ số 1 đến 4:',s2)
Tập huấn NNLT Python
80
Xâu con từ chỉ số 0 đến 2: Pyt
Xâu con từ chỉ số 1 đến 4: ytho
VI. Kiểu dữ liệu xâu (str)
<biến xâu>[:a]hoặc <biến xâu>[0:a].
<biến xâu>[a:]
Tập huấn NNLT Python
81
VI. Kiểu dữ liệu xâu (str)
<biến xâu>[::-1]
s = 'abcdefg'
s1 = s[::-1]
print(s1)
Tập huấn NNLT Python
82
gfedcba
VI. Kiểu dữ liệu xâu (str)
str(<biến kiểu số>)
Tập huấn NNLT Python
83
VI. Kiểu dữ liệu xâu (str)
<biến xâu>.split()
s = 'Tự học lập trình Python'
L = s.split()
print('Xâu được tách thành:')
print(L)
Tập huấn NNLT Python
84
Xâu được tách thành:
['Tự', 'học', 'lập', 'trình', 'Python']
VI. Kiểu dữ liệu xâu (str)
<biến xâu>.split(<ký tự phân tách>)
s = 'Tự học lập trình, Python'
L = s.split(',')
print('Xâu được tách thành:')
print(L)
Tập huấn NNLT Python
85
Xâu được tách thành:
['Tự học lập trình', ' Python']
VI. Kiểu dữ liệu xâu (str)
‘ký tự nối’.join(<biến danh sách>)
a = ['1', '2', '3', '4']
b = ','.join(a)
print(type(b))
print(b)
Tập huấn NNLT Python
86
<class 'str'>
1,2,3,4
VI. Kiểu dữ liệu xâu (str)
<biến xâu>.upper()
<biến xâu>.lower()
<biến xâu>.capitalize()
<biến xâu>.title()
<biến xâu>.swapcase()
Tập huấn NNLT Python
87
VI. Kiểu dữ liệu xâu (str)
s = 'abCDe123'
s1 = s.upper()
s2 = s.lower()
print('Xâu hoa:',s1)
print('Xâu thường:',s2)
s3 = 'tự học lập trình PYTHON'
print('Xâu có ký tự hoa đầu xâu:',s3.capitalize())
print('Xâu có ký tự hoa đầu mỗi từ:',s3.title())
print('Xâu có chuyển đổi qua lại giữa hoa và thường:',s3.swapcase())
Tập huấn NNLT Python
88
Xâu hoa: ABCDE123
Xâu thường: abcde123
Xâu có ký tự hoa đầu xâu: Tự học lập trình python
Xâu có ký tự hoa đầu mỗi từ: Tự Học Lập Trình Python
Xâu có chuyển đổi qua lại giữa hoa và thường: TỰ HỌC LẬP TRÌNH python
VI. Kiểu dữ liệu xâu (str)
s.count(sb)
Tập huấn NNLT Python
89
VI. Kiểu dữ liệu xâu (str)
s1 = 'ab'
s2 = 'ab12abab'
x = s2.count(s1)
y = s2.count(s1,2)
z = s2.count(s1,1,6)
print('Số lần xuất hiện:',x)
print('Số lần xuất hiện:',y)
print('Số lần xuất hiện:',z)
Tập huấn NNLT Python
90
Số lần xuất hiện: 3
Số lần xuất hiện: 2
Số lần xuất hiện: 1
VI. Kiểu dữ liệu xâu (str)
s.find(sb)
Tập huấn NNLT Python
91
VI. Kiểu dữ liệu xâu (str)
s1 = 'ab'
s2 = 'ababab'
s = 'acabab'
x = s.find(s1)
y = s.find('abc')
print('Vị trí đầu tiên xâu s1 trong s:',x)
print('Vị trí đầu tiên xâu abc trong s:',y)
print('Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 1:',s2.find(s1,1))
print('Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 3 đến 5:',s2.find(s1,3,6))
Tập huấn NNLT Python
92
Vị trí đầu tiên xâu s1 trong s: 2
Vị trí đầu tiên xâu abc trong s: -1
Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 1: 2
Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 3 đến 5: 4
VI. Kiểu dữ liệu xâu (str)
s.replace(x, y)
Tập huấn NNLT Python
93
VI. Kiểu dữ liệu xâu (str)
s1 = 'aaabaa'
s2 = s1.replace('aa','AA')
s3 = 'aaaaaabb'
s4 = s3.replace('aa','AA',2)
print(s2)
print(s4)
Tập huấn NNLT Python
94
AAabAA
AAAAaabb
VI. Kiểu dữ liệu xâu (str)
Tập huấn NNLT Python
95
�VII. Lập trình hàm
Tập huấn NNLT Python
96
VII. Lập trình hàm
Tập huấn NNLT Python
97
VII. Lập trình hàm
def <tên hàm>([các tham số]):
<lệnh/ khối lệnh thực hiện nhiệm vụ>
Tập huấn NNLT Python
98
VII. Lập trình hàm
Tập huấn NNLT Python
99
VII. Lập trình hàm
n = 10 # n là biến toàn cục
def Tong():
i = 0 # i là biến cục bộ
s = 0 # s là biến cục bộ
while i<=n:
s = s + i
i = i +1
return s
print('Tổng:',Tong())
Tập huấn NNLT Python
100
Tổng: 55
VII. Lập trình hàm
n = 10 # biến toàn cục
def Tong():
i = 0 # biến cục bộ
s = 0 # biến cục bộ
n = 20 # biến cục bộ
while i<=n:
s = s + i
i = i +1
return s
print('Tổng:',Tong())
print('Giá trị n:',n)
Tập huấn NNLT Python
101
Tổng: 210
Giá trị n: 10
VII. Lập trình hàm
n = 10 # biến toàn cục
s = 0 # biến toàn cục
def Tong():
i = 0 # biến cục bộ
while i<=n:
s = s + i
i = i +1
return s
print('Tổng:',Tong())
Tập huấn NNLT Python
102
Traceback (most recent call last):
File "E:/VD-B13.py", line 9, in <module>
print('Tổng:',Tong())
File "E:/VD-B13.py", line 6, in Tong
s = s + i
UnboundLocalError: local variable 's' referenced before assignment
VII. Lập trình hàm
n = 10 # biến toàn cục
s = 0 # biến toàn cục
def Tong():
i = 0 # biến cục bộ
while i<=n:
global s
s = s + i
i = i +1
return s
print('Tổng:',Tong())
Tập huấn NNLT Python
103
Tổng: 55
VII. Lập trình hàm
Tập huấn NNLT Python
104