Python Basic

Contents

2.2.1. Python Basic#

print('Ank')
Ank
# xin chào
## xin chào
##### xin chào

2.2.1.1. The Variable#

# VD1
z = 4
Y = 5
c = Y + z
print(c)
9
# VD2
a = 'An'
b = 'k'
print(a+b)
Ank
# VD3
Ten = 'An'
Tuoi = 21
print(Ten)
print(Tuoi)
An
21
## có thể khai báo nhiều biến cùng 1 lúc
Ten, lop, Tuoi = 'An', 10, 21
print(Ten, lop, Tuoi)
An 10 21

2.2.1.1.1. Check kind of variable#

#VD
Ten = 'An'
lop = 12
DiemTB = 3.2
print(type(Ten))
print(type(lop))
print(type(DiemTB))
<class 'str'>
<class 'int'>
<class 'float'>

2.2.1.2. Number type in Python#

# gán cho biến a giá trị là 4. Với 4 là kiểu số nguyên ( intergers )
a = 4 
print(a)
# Kiểu dữ liệu của a
print(type(a))
4
<class 'int'>
a = '4' 
print(a)
# Kiểu dữ liệu của a
print(type(a))
4
<class 'str'>
# gán cho biến a giá trị là 4.3. Với 4.3 là kiểu số thực (float)
a = 4.3
print(a)
# Kiểu dữ liệu của a
print(type(a))
4.3
<class 'float'>
# có thể in ra chính xác xấp xỉ 15 chữ số thập phân
b = 1,77364547288847366454399973783838888888
print(b)
# trên đây thì in đc hết nhưng có 1 số bản chạy của python in đến 15 chữ số thập phân
(1, 77364547288847366454399973783838888888)
# lấy toàn bộ nội dung của thư viện decimal
# từ thư viện decimal -> import mọi thứ(*) vào
from decimal import*
# lấy tối đa 30 chữ số phần nguyên và phần thập phân decimal
getcontext().prec = 30
print(10/3)
# như đã thấy khi in bth thì python giới hạn số chữ số thập phân
print(Decimal(10)/Decimal(3))
# đếm bên dưới có đủ 30 chữ số
print(10/Decimal(3))
print(Decimal(10)/3)
# chỉ cần 1 Decimal là áp dụng đc
# Lưu ý phải viết hoa chữ 'D'
print(type(10/3))
print(type(Decimal(10)/Decimal(3)))
3.3333333333333335
3.33333333333333333333333333333
3.33333333333333333333333333333
3.33333333333333333333333333333
<class 'float'>
<class 'decimal.Decimal'>

2.2.1.2.1. Create fraction in python#

from fractions import*
frac = Fraction(6,9)
print(frac)
print(type(frac))
2/3
<class 'fractions.Fraction'>

2.2.1.2.2. Complex number#

c = complex(2,5)
print(c)
# lấy số phức
print(c.real)
# lấy phần thực
print(c.imag)
# lấy phần ảo
(2+5j)
2.0
5.0

2.2.1.2.3. Basic operators in python#

#VD lấy phần nguyên 
a = 10//3
print(a)
3
#VD lấy phần dư
b = 10%3
print(b)
1
#VD lũy thừ x cơ số y
c = 3**2
print(c)
9

2.2.1.2.4. Math library#

import math
a = math.trunc(3.9)
# trunc là trả về 1 số nguyên là phần nguyên của a
print(a)
b = math.fabs(-3)
# trả về một số thực là trị tuyệt đối của b
print(b)
c = math.sqrt(16)
# trả về một số thực là căn bậc 2 của c
print(c)
d = math.gcd(6,4)
# trả về mooyj số nguyên là ước chung lớn nhất của hai số 6,4
print(d)
3
3.0
4.0
2

2.2.1.3. String type in python#

#VD
a = 'Ank'
print(a)
print(type(a))
Ank
<class 'str'>
#VD
a = "Ank"
print(a)
print(type(a))
Ank
<class 'str'>
b = "I'm Ank"
print(b)
I'm Ank
b = "I'm Ank"
print(b)
I'm Ank
# trên là sự khác biệt giữa nháy đơn và nháy kép,
# khi có nháy đơn r thì ta lên sử dụng nháy kép như trên
# hoặc ngược lại
# VD chuỗi nhiều dòng
S0 = """Ank 
đẹp
trai
"""
S1 = """Ank đẹp trai
"""
S2 = """Ank\nđẹp\ntrai
"""
print(S0)
print(S1)
print(S2)
Ank 
đẹp
trai

Ank đẹp trai

Ank
đẹp
trai
# VD :
print('\a')

print('abcd\be')

print('dong1\ndong2')

print('dong1\tdong2')

print('I\'m beginner')

print('I\\m beginner')

abce
dong1
dong2
dong1	dong2
I'm beginner
I\m beginner

2.2.1.3.1. Bare string#

#VD :
print(r'Haizz, \neu mot ngay')
Haizz, \neu mot ngay

2.2.1.3.2. Add string#

#VD
strA = 'Ank'
strB = 'Vip'
strC = strA + strB
strD = strA + '\t' + strB
strE = strA*3
print(strC)
print(strD)
print(strE)
AnkVip
Ank	Vip
AnkAnkAnk
#VD
strA = 'Ank'
strB = 'A'
strC = 'An'
strD = 'da'
strE = strB in strA
strF = strC in strA
strG = strD in strA
print(strE)
print(strF)
print(strG)
True
True
False

2.2.1.3.3. Find the position of the string#

strA = "Nguyen Duy An"
strB = strA[4]
strC = strA[-2]
print(strB)
print(strC)
e
A
# VD mã của chuỗi
strA = "Nguyen Duy An"
print(hash(strA))
-7058168014222928233
#VD xem độ dài của chuỗi
strA = "Nguyen Duy An"
strC = len(strA)
print(strC)
13
strA = "Nguyen Duy An"
strB = strA[1 : 4]
strC = strA[1:10:2]
print(strB)
print(strC)
guy
gynDy

2.2.1.3.4. Press style#

strA = '69' + 5
print(strA)
# chưa ép kiểu lên k cộng dc
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[33], line 1
----> 1 strA = '69' + 5
      2 print(strA)

TypeError: can only concatenate str (not "int") to str
strA = int('69') + 5
strA2 =  '69' + str(5)
strA3 = int(6.9)
print(strA)
print(strA2)
print(strA3)
74
695
6

2.2.1.3.5. String format#

a = ' MY nam is %s' %('An')
a1 = ' MY nam is %s'
a2 = ' MY nam %s An' %('is')
# %s có thể ở đâu trong chuỗi cũng được
a3 = ' MY nam is %s %s' %('An','an') 
# có bao nhiêu % s thêm sau % () bấy nhiêu cái.
print(a)
print(a1)
print(a2)
print(a3)
 MY nam is An
 MY nam is %s
 MY nam is An
 MY nam is An an
s = '%s %s'
print(s %('1','2'))
result = s %('1','2')
print(result)
1 2
1 2
f = '%.3f' %(3.456457)
# số 3 đằng trước là để làm tròn đến số thập thân thứ 3
print(f)
3.456
print(f'a\tb')
a	b
an = 'Anne'
result = f'{an} - day la gi'
result1 = '{an} - day la gi'
result2 = f'{{an}} - day la gi'
print(result)
print(result1)
print(result2)
#f đây hiểu đơn giản dùng để thay thế 1 biến thành giá trị của biến đó
Anne - day la gi
{an} - day la gi
{an} - day la gi
r1 = '1:{one},2:{two}'.format(one=111, two=222)
print(r1)
r2 = '1:{},2:{}'.format(111, 222)
print(r2)
r3 = '1:{1},2:{0}'.format(111, 222)
print(r3)
1:111,2:222
1:111,2:222
1:222,2:111
# VD
a = '{:t^20}'.format('aaaa')
print(a)
a1 = 'an  {:*^20}  ne'.format('aaaa')
print(a1)
ttttttttaaaatttttttt
an  ********aaaa********  ne

2.2.1.3.6. Functions in strings#

a = '12'
print(int(a))
print(type(a))
12
<class 'str'>
a = 'an iS AN'
b = a.capitalize()
print(a)
print(b)
# cho ra 1 kết quả nếu là 1 chuỗi thì viết hoa chữ cái đầu 
#và viết thường các chữ cái còn lại
an iS AN
An is an
a = 'an iS AN'
b = a.upper()
print(a)
print(b)
# upper viết hoa hết tất cả
an iS AN
AN IS AN
a = 'an iS AN'
b = a.lower()
print(a)
print(b)
# lower viết thường tất cả
an iS AN
an is an
a = 'an iS AN'
b = a.swapcase()
print(a)
print(b)
# swapcase chữ thường viết hoa chữ hoa viết thường
an iS AN
AN Is an
a = 'an iS AN'
b = a.title()
print(a)
print(b)
# title Viết hoa các chữ cái đầu , các chữu cái sau viết thường
an iS AN
An Is An
a = 'an iS AN'
b = a.center(30, '*')
print(a)
print(b)
# center dùng để căn giữa , cái ký tự sau 30 k điền cũng được
# và nó là 1 chuỗi chỉ có độ dài là 1
an iS AN
***********an iS AN***********
a = 'an iS AN'
b = a.rjust(20, '-')
print(a)
print(b)
# căn phải
an iS AN
------------an iS AN
a = 'an iS AN'
b = a.ljust(20, '-')
print(a)
print(b)
# căn trái
an iS AN
an iS AN------------
a = 'an iS AN'
b = a.encode(encoding = 'utf-8', errors = 'strict')
b1 = a.encode()
print(a)
print(b)
print(b1)
# dùng để mã hóa
an iS AN
b'an iS AN'
b'an iS AN'
a = 'có gì hót'
b = a.encode()
print(b)
b'c\xc3\xb3 g\xc3\xac h\xc3\xb3t'
a = ' an is an'
b = a.join(['1','2','3'])
print(a)
print(b)
# trong join phải là chuỗi hoặc các chuỗi
 an is an
1 an is an2 an is an3
a = ' an is an'
b = a.replace('a','á')
print(a)
print(b)
# thay thế 1 chuỗi thành 1 chuỗi mới
 an is an
 án is án
a = ' an is an'
b = a.replace('a','á', 1)
print(a)
print(b)
# thêm số đằng sau nữa như trên thì nó thay thế 1 cái hoặc nhiều cái
 an is an
 án is an
a = 'an is an'
b = a.strip('n')
c = a.strip('a')
print(a)
print(b)
print(c)
# dùng để xóa kí tự đầu tiên hoặc cuỗi cùng hoặc ta có thể 
#ghi 2 hoặc nhiều kí tự hơn nhưng phải nằm ở phía đầu hoặc cuối.
# có thể dùng lstrip() hoặc rstrip để cắt trái hoặc phải
an is an
an is a
n is an

2.2.1.3.7. Methods in the string#

a = 'Nguyễn Duy An'
b = a.split(' ')
# split cắt bằng 1 ký tự trong chuỗi
c = a.split('u')
print(b)
print(c)
# split là phương thức cắt rồi trả về 1 list
['Nguyễn', 'Duy', 'An']
['Ng', 'yễn D', 'y An']
a = 'Nguyễn Duy An nè'
b = a.split(' ',2)
# split cắt bằng 1 ký tự trong chuỗi, và với số lần cắt đc ghi ở sau
c = a.split('u',1)
print(b)
print(c)
# split là phương thức cắt rồi trả về 1 list
# với rsplit : cắt phải qua trái
# bth thì nó là cắt trái lên k cần lsplit
['Nguyễn', 'Duy', 'An nè']
['Ng', 'yễn Duy An nè']
a = 'Nguyễn Duy DAn'
b = a.partition('u')
print(b)
# trả về 1 tupple với 3 phần tử với phần tử đầu tiên nó thấy
# rồi cắt ra làm 3 với phần tử muốn cắt
# rpartition cắt từ phải qua trái
('Ng', 'u', 'yễn Duy DAn')
a = 'Nguyễn Duy An'
b = a.count('u')
print(b)
# count dùng để đếm các phần tử trong chuỗi
2
a = 'Nguyễn Duy An'
b = a.count('u',0,10)
# thêm 2 số đằng sau nói là tìm có bn chữ u trong khoảng từ
# vị trí 0 đến 10
print(b)
# count dùng để đếm các phần tử trong chuỗi
2
a = 'Nguyễn Duy An'
b = a.startswith('N')
print(b)
# startswith là dùng để tìm chữ cái bắt đầu hoặc từ bắt đầu
True
a = 'Nguyễn Duy An'
b = a.startswith('N')
print(b)
# startswith là dùng để tìm chữ cái bắt đầu hoặc từ bắt đầu
True
a = 'Nguyễn Duy An'
b = a.startswith('Nguyễn',0,6)
print(b)
# startswith là dùng để tìm chữ cái bắt đầu hoặc từ bắt đầu
True
a = 'Nguyễn Duy An'
b = a.endswith('n')
print(b)
# endswith là dùng để tìm chữ cái cuối cùng
True
a = 'Nguyễn Duy An'
b = a.find('u')
print(b)
# find tìm vị trí của phần tử mà mình muốn tìm
# có cả rfind
2
a = 'Nguyễn Duy An'
b = a.index('N')
print(b)
# index là tìm vị trí của phần tử mà mình muốn tìm 
# nếu phần tử đó không có thì nó sẽ báo lỗi
# có cả rindex
0
a = 'Nguyễn Duy An'
b = a.islower()
print(b)
# islower có phải chuỗi viết thường không nếu là chuỗi có viết hoa thì báo sai
False
a = 'Nguyễn Duy An'
b = a.isupper()
print(b)
# isupper kiểm tra có phải chuỗi viết hoa không
False
a = 'Nguyễn Duy An'
c = '5'
b = a.isdigit()
d = c.isdigit()
print(b)
print(d)
# isdigit là kiểm tra tất cả xem nó có phải là số không
False
True
a = ' '
b = a.isspace()
print(b)
# isspace ktra xem có phải khoảng trắng không
True

2.2.1.4. List in python#

a = [1,2,5,'An']
print(a)
[1, 2, 5, 'An']
a = [[1],['An'],[8.5]]
print(a)
[[1], ['An'], [8.5]]
a = [i for i in range(1000)]
print(a)
# tạo ra 1 list từ 0 cho tới 999
[0, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999]
a = [[n,n*1,n*2] for n in range(1,4)]
print(a)
[[1, 1, 2], [2, 2, 4], [3, 3, 6]]

2.2.1.4.1. structure list#

a = list('An nè')
print(a)
['A', 'n', ' ', 'n', 'è']

2.2.1.4.2. List operator#

a = [1,2]
a = a + ['one','two']
print(a)
# chỉ list + list mới đc
[1, 2, 'one', 'two']
a = [1,2]
a *= 2
print(a)
# không nhân dc list với nhau
[1, 2, 1, 2]
a = [1,2]
b = 1 in a
print(b)
# in dùng để xem phần tử này có trong list không
True
a = [1,2,'a','b','c',[3,4]]
c = a[0]
b = a[5][1]
print(b)
print(c)
# cách lấy phần tử thứ 'k' trong list
4
1
a = [1,2,'a','b','c',[3,4]]
b = a[None:4]
print(b)
# lấy phần tử thứ k đến phần tử thứ k1-1
# lấy ngược lại ta đổi : thành ::
[1, 2, 'a', 'b']
a = [1,2,'a','b','c',[3,4]]
a[1] = 'Kteam'
b = a[1]
print(b)
print(a)
# cách thay đổi phần tử trong list
Kteam
[1, 'Kteam', 'a', 'b', 'c', [3, 4]]
a = [[1,2,3],[4,5,6]]
print(a[0])
print(a[1])
# ma trận trong list (làm sao in ra cho giống ma trận :))))
[1, 2, 3]
[4, 5, 6]
a = [1,2,3]
b = a
print(a)
print(b)
b[0] = 'An'
print(a)
print(b)
# không lên gán b = a như này mà lên làm nhưu bên dưới
[1, 2, 3]
[1, 2, 3]
['An', 2, 3]
['An', 2, 3]
a = [1,2,3]
b = list(a)
print(a)
print(b)
b[0] = 'An'
print(a)
print(b)
# như kết quả ta đã thấy sự khác biệt
[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
['An', 2, 3]

2.2.1.4.3. List’s method#

a = [1,2,3,4,5,6,7,8,1]
c = a.count(1)
print(c)
## count của list đùng dể đếm số lần xuất hiện của phần tử 
2
a = [1,2,3,4,5,6,7,8,1]
c = a.index(1)
print(c)
# index trả ra số nguyên của vị trí đó trong list, không có thì lỗi
0
a = [1,2,3,4,5,6,7,8,1]
c = a.copy()
c[0] = 'An'
print(c)
print(a)
# copy dùng để tạo ra bản sao nhưng mà 2 bản sao không liên quan đến nhau
['An', 2, 3, 4, 5, 6, 7, 8, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 1]
a = [1,2,3,4,5,6,7,8,1]
a.clear()
print(a) 
# xóa hết các phần tử trong list
[]
a1 = [1,2,3,4,5,6,7,8,1]
a1.append(4)
print(a1)
a1.append([7,6])
print(a1)
# append là thêm 1 phần tử vào list
[1, 2, 3, 4, 5, 6, 7, 8, 1, 4]
[1, 2, 3, 4, 5, 6, 7, 8, 1, 4, [7, 6]]
a = [1,2,3,4,5,6,7,8,1]
a.extend([4,5,[7,8]])
print(a)
# extend là thêm từng phần tử bên trong vào trong list
[1, 2, 3, 4, 5, 6, 7, 8, 1, 4, 5, [7, 8]]
a = [1,2,3,4,5,6,7,8,1]
a.insert(1, 2)
print(a) 
# insert thêm phần từ 2 vào vị trí 1 so với VD
# nếu quá vị trí trong list thì thêm vào cuối list
[1, 2, 2, 3, 4, 5, 6, 7, 8, 1]
a = [1,2,3]
print(a)
c = a.pop(1)
print(a)
print(c)
# pop lấy ra phần tử thứ 1 trong list rồi bỏ luôn khỏi list đó
# nếu k có lấy phần tử thứ mấy thì lấy phần tử cuối cùng
[1, 2, 3]
[1, 3]
2
a = [1,1,2,3]
print(a)
c = a.remove(1)
print(a)
# remove là bỏ đi phần tử đc chọn trong remove 
# nếu khoogn có trong list thì lỗi
[1, 1, 2, 3]
[1, 2, 3]
a = [1,1,2,3]
print(a)
a.reverse()
print(a)
# reverse dùng để đảo ngược các phần tử trong list lại
[1, 1, 2, 3]
[3, 2, 1, 1]
a = [15,2,3]
print(a)
a.sort()
print(a)
a.sort(reverse = True)
print(a)
# sort sắp xếp các phần tử theo chiều tăng dần
# nếu muốn đảo ngược lại thì ghi reserve = True
#và muốn sắp xếp thì chúng phải cùng 1 kiểu dữ liệu
[15, 2, 3]
[2, 3, 15]
[15, 3, 2]

2.2.1.5. Tuple in python#

tup = (1,1,(2,3),4,5,6,'An')
print(tup)
(1, 1, (2, 3), 4, 5, 6, 'An')
a = tuple(('An ne'))
print(a)
tup = (i for i in range(10) if i%2 == 0)
b = tuple(tup)
print(b)
('A', 'n', ' ', 'n', 'e')
(0, 2, 4, 6, 8)
tup = (1,5,9)
a = tup + (2,4,6)
tup+= (34,6)
print(a)
print(tup)
tup *=2
print(tup)
(1, 5, 9, 2, 4, 6)
(1, 5, 9, 34, 6)
(1, 5, 9, 34, 6, 1, 5, 9, 34, 6)
tup = (1,5,9)
a = 2 in tup
b = 1 in tup
print(a)
print(b)
False
True
tup = (1,5,9)
a = tup[0]
print(a)
1
tup = (1,5,9)
a = len(tup)
print(a)
#len dùng để xem hàm có bn phần tử
3
# lấy phần tử như list
tup = (1,5,9,4)
tup[0] = 'kteam'
print(tup)
# k thể thay đổi phần tử trong tuple
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[104], line 2
      1 tup = (1,5,9,4)
----> 2 tup[0] = 'kteam'
      3 print(tup)

TypeError: 'tuple' object does not support item assignment
tup = (1,1,2,5,6)
a = tup.count(1)
print(a)
# count đếm số phần tử trong tuple
2
tup = (1,1,2,5,6)
a = tup.index(1)
print(a)
# index tìm vị trí xuất hiện đầu tiên của phần tử đó
0

2.2.1.6. Hashable and unhashable in python#

a = id(532423)
print(a)
# hàm id() trả về giá trị là 'int' hoặc 'long int'
2560360275344
b = 532423
a = id(532423)
print(a)
2560360274032
a = 'An'
b = id(a)
print(b)
print(id('An'))
# nói chung là id sẽ cho ra kết quả khác nhau
# nhưng chuỗi thì không đổi
2560346814144
2560346814144

2.2.1.6.1. Operators of hasobject and unhasobject#

n = 69
print(n)
print(n + 1)
print(n.__add__(1))
print(n - 1)
print(n.__sub__(1))
print(n*2)
print(n.__mul__(2))
print(1 +n)
print(n.__radd__(1))
print(-n)
print(n.__neg__())
69
70
70
68
68
138
138
70
70
-69
-69
s_1 = 'An'
S_2 = "nee"
print(id(s_1))
print(id(S_2))


s_1 = s_1 + 'Python'
S_2 += 'Python'
print(id(s_1))
print(id(S_2))
2560346814144
2560349477344
2560361199792
2560361526960
s_1 = [1,2]
s_2 = [3,4]
print(id(s_1))
print(id(s_2))
2560361118784
2560361498688
s_1 = [1,2]
s_2 = [3,4]
s_1 = s_1 + [0]
s_2 += [0]
print(id(s_1))
print(id(s_2))
2560361118784
2560361498368
s_1 = [1,2]
print(id(s_1))
s_1.__add__([3,4]) # add bằng với +=
print(id(s_1))
2560361498688
2560361498688

2.2.1.7. Set in python#

set_1 = {69,96}
print(set_1)
print(type(set_1))
{96, 69}
<class 'set'>
set_2 = {' Nguyễn Duy An'}
print(set_2)
{' Nguyễn Duy An'}
set_3 = {(69, ' Nguyễn Duy An'), (1, 2, 3)}
print(set_3)
{(1, 2, 3), (69, ' Nguyễn Duy An')}
set_4 = {[1,2]}
print(set_4)
# Set không thể chứ list, unhashable
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[118], line 1
----> 1 set_4 = {[1,2]}
      2 print(set_4)

TypeError: unhashable type: 'list'
set_5 = {{1,2}}
print(set_5)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[119], line 1
----> 1 set_5 = {{1,2}}
      2 print(set_5)

TypeError: unhashable type: 'set'
set_6 = {'NguyenAN', 'An', '69'}
print(set_6)
{'69', 'An', 'NguyenAN'}
set_7 = {value for value in range(3)}
print(set_7)
{0, 1, 2}
set_8 = set((1,2,3))
print(set_8)
{1, 2, 3}
set_9 = set(('NguyenAn'))
print(set_9)
{'A', 'n', 'N', 'u', 'e', 'y', 'g'}
set_8 = set('aaaaaaaaaaaaaaaa')
print(set_8)
{'a'}
set_8 = set()
print(set_8)
print(type(set_8))
set()
<class 'set'>

2.2.1.7.1. Operators in set#

print(1 in {1,2,3})
print({1,2} in {1,2,3})
True
False
print((1,2) in {(1,2),3})
True
print({1,2,3} - {2,3})
# - 2 set với nhau nhưng phần chính là set đầu
{1}
print({1,2,3} - {2,3,1,4,5})
# như phần này ta thấy 4,5 của set 2 có nhưng mà - set k lấy 
set()
print({1,2,3,4} & {4,5})
# & để lấy thằng nào mà 2 set đều có
{4}
print({1,2,3,4} | {4,5})
# | ( gọi là hoặc) lấy hết các phần tử 2 set gộp vào nhau
{1, 2, 3, 4, 5}
print({1,2,3,4} ^ {4,5})
# ^( gọi là và) dùng để loại bỏ các phần tử trùng nhau ở 2 Set
{1, 2, 3, 5}

2.2.1.7.2. Methods in set#

set3 = {1,3,4}
a = set3.clear()
print(a)
# clear dùng để xóa hết các phần tử trong set
None
set3 = {1,3,4}
set3.pop()
print(set3)
# pop dùng để lấy phần tử đầu tiên trong set rồi cho nó biến mất khỏi set
{3, 4}
set3 = {1,3,4}
set3.remove(3)
print(set3)
# phương thức remove là nâng cấp hơn của pop, có thể chọn phần tử muốn xóa
{1, 4}
set3 = {1,3,4}
set3.discard(5)
print(set3)
# discard như remove 
#nhưng có thể chọn phần tử k có trong set để xóa mà k bị báo lỗi như set
{1, 3, 4}
set3 = {1,3,4}
set2 = set3.copy()
print(set2)
# copy là sao chép set mà mình muốn
{1, 3, 4}
set3 = {1,3,4}
set3.add(5)
print(set3)
# thêm phần tử vào trong set
{1, 3, 4, 5}
set3 = {1,3,4}
print(id(set3))
set3.add(7)
print(id(set3))
2560360314048
2560360314048
set3 = {1,3,4}
print(set3)
set2 = set3
set2.clear()
print(set3)
{1, 3, 4}
set()

2.2.1.8. Dict in python#

2.2.1.8.1. Create Dict#

dic = {'name' : 'An', 'member' : 69}
print(dic)
print(type(dic))
{'name': 'An', 'member': 69}
<class 'dict'>
dic ={}
print(dic)
{}
dic = {key : value for key, value in [('name','An'),('member',69)]}
print(dic)
{'name': 'An', 'member': 69}
dic = dict()
print(dic)
print(type(dic))
{}
<class 'dict'>
iter_ = [('name','An'),('member',69)]
dic = dict(iter_)
print(dic)
print(type(dic))
{'name': 'An', 'member': 69}
<class 'dict'>
dic = dict(name = 'Anne',FE = 'Free')
print(dic)
{'name': 'Anne', 'FE': 'Free'}
inter_ = ('name','number',69, True)
dic = dict.fromkeys(inter_, 'An')
print(dic)
print(type(dict))
# cách trên dùng để tạo các key rồi đưa giá trị của value vào dict từ fromkeys
{'name': 'An', 'number': 'An', 69: 'An', True: 'An'}
<class 'type'>
inter_ = ('name','number',69, True)
dic = dict.fromkeys(inter_, 'An')
print(dic[True])
# các này dùng để chọn value từ key mà mình muốn nhưng lấy key k có trong dict thì sẽ báo lỗi
An
inter_ = ('name','number',69, True)
dic = dict.fromkeys(inter_, 'An')
dic[True] = 123
print(dic[True])
# đổi value của key được chọn
123
dic = dict(K = 69 , AN = 'Anne', FE = 'Free')
print(dic)
dic['K'] = dic['K'] + 1
print(dic)
{'K': 69, 'AN': 'Anne', 'FE': 'Free'}
{'K': 70, 'AN': 'Anne', 'FE': 'Free'}

2.2.1.8.2. Methods in python in Dict#

d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.copy()
print(d2)
# copy tạo ra 1 bảo sao mới ở 1 vùng mới 
{'An': 'Nguyen', (1, 2): 69}
{'An': 'Nguyen', (1, 2): 69}
d = {'An': "Nguyen",(1,2):69}
print(d)
d.clear()
print(d)
# clear để xóa các phần tử trong dict
{'An': 'Nguyen', (1, 2): 69}
{}
d = {'An': "Nguyen",(1,2):69}
print(d)
value = d.get('An')
print(value)
# get dùng để lấy ra value của key mà mình muốn trong dict
{'An': 'Nguyen', (1, 2): 69}
Nguyen
d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.items()
print(d2)
# items có tác dụng như dưới
# nếu muốn lấy từng phần tử thì ta chuyển thành list rồi lấy
{'An': 'Nguyen', (1, 2): 69}
dict_items([('An', 'Nguyen'), ((1, 2), 69)])
d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.keys()
print(d2)
# keys dùng để lấy ra những key trong dict
{'An': 'Nguyen', (1, 2): 69}
dict_keys(['An', (1, 2)])
d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.values()
print(d2)
# values lấy ra những values trong dict
{'An': 'Nguyen', (1, 2): 69}
dict_values(['Nguyen', 69])
d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.pop('An')
print(d2)
print(d)
# pop dùng để lấy ra giá trị value của key mình muốn rồi cho key đó ra khỏi dict
{'An': 'Nguyen', (1, 2): 69}
Nguyen
{(1, 2): 69}
d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.popitem()
print(d2)
# k hiểu lắm.......
{'An': 'Nguyen', (1, 2): 69}
((1, 2), 69)
d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.setdefault('An')
print(d2)

d = {'An': "Nguyen",(1,2):69}
print(d)
d2 = d.setdefault('vip')
print(d2)
# setdefault trả về giá trị của value của key ta muốn trong dict 
# hoặc nếu key đó không có trong dict thì nó sẽ cho ra kết quả là None
{'An': 'Nguyen', (1, 2): 69}
Nguyen
{'An': 'Nguyen', (1, 2): 69}
None
d = {'An': 'Nguyen',(1,2):69}
print(d)
d2 = d.update( An = 'Duy An', Vip = 'Ne')
print(d)
# update là dùng để cập nhật dữ liệu mới hoặc thêm dữ liệu mới mà ta muốn thêm
{'An': 'Nguyen', (1, 2): 69}
{'An': 'Duy An', (1, 2): 69, 'Vip': 'Ne'}

2.2.1.9. File in python#

2.2.1.9.1. File operations in python#

file_object = open('AN.txt')
print(file_object)
<_io.TextIOWrapper name='AN.txt' mode='r' encoding='utf-8'>
file_object = open('AN.txt', mode = 'a+')
print(file_object)
# a+ dùng để mở file
<_io.TextIOWrapper name='AN.txt' mode='a+' encoding='utf-8'>
file_object = open('AN.txt')
data = file_object.read(2333)
data2 = file_object.read()
print(data)
print(data2)
# read đùng dể đọc file khi đã đc mở và con số trong read dùng để giới hạn bn ký tự được đọc
# data đã đọc hết ksi tự r lên data 2 sẽ k có ptu để đọc nữa lên sẽ ra khoảng trắng
# nếu muốn đọc thì ra phải dùng close() để đóng data ban đầu
An
file_object = open('AN.txt')
data = file_object.read(2333)
file_object.close()
file_object = open('AN.txt')
data2 = file_object.read()
print(data)
print(data2)
# đây là ví dụ cho cái trên
An
An
file_object = open('AN.txt')
data = file_object.readline()
print(data)
# readline dùng để đọc dòng
An
file_object = open('AN.txt')
data = file_object.readlines()
print(data)
# readlines dùng để đọc nhiều dòng và các nhau bằng \n
['An']
file_object = open('AN.txt')
data = list(file_object)
print(data)
# có thể biến chúng thành list hoặc tuple ,....
['An']
file_object = open('AN.txt', mode = 'a+')
data = file_object. write('An')
file_object.close()
print(data)
# write thêm kí tự vào bản rồi cho bt mấy ký tự được thêm
# thêm \n trc An như '\nAn' thì để cho An xuống dòng
2
file_object = open('AN.txt')
data2 = file_object.read()
file_object.seek(0)
data = file_object.read()
file_object.close()
print(data2)
print(data)
# khi read thì nó đã đọc đến vị trí cuối của bài r và không còn gì đọc
# rồi muốn đọc lại từ đầu thì ra dùng seek() để cho con trỏ quay lại vị trí mà mình mong muốn rồi đọc tiếp
AnAn
AnAn

2.2.1.10. Interaction object in python#

inter = [x for x in range(3)]
print(inter)
# đây là tạo ra list
[0, 1, 2]
inter = (x for x in range(3))
print(inter)
<generator object <genexpr> at 0x00000254216837C0>
inter = (x for x in range(3))
print(inter)
print(next(inter))
print(next(inter))
print(next(inter))
# vì ngoặc trong là tạo ra generator object lên chỉ lấy đc từng phần tử
<generator object <genexpr> at 0x0000025421683D00>
0
1
2
inter = (x for x in range(3))
print(inter)
print(sum(inter))
# sum là hàm tính tổng
<generator object <genexpr> at 0x0000025421683C40>
3
inter = (x for x in range(3))
print(inter)
print(max(inter))
# max là tìm giá trị lớn nhất
<generator object <genexpr> at 0x0000025421683AC0>
2
inter = (x for x in range(3))
print(inter)
print(max([], default = 'An'))
# vì trong max k có gì lên nó ra kết quả là An
<generator object <genexpr> at 0x0000025421683D00>
An
inter = (x for x in range(3))
print(inter)
print(min(inter))
# min là tìm giá trị nhỏ nhất
<generator object <genexpr> at 0x0000025421681780>
0
inter = [1, 6, 7, 4,2]
print(inter)
print(sorted(inter))
print(sorted(inter, reverse = True))
# sorted dùng để sắp xếp và có thể sắp xếp từ bé đến lớn hoặc từ lớn đến bé
[1, 6, 7, 4, 2]
[1, 2, 4, 6, 7]
[7, 6, 4, 2, 1]

2.2.1.11. Output function in python#

print('An','Ne')
print('An','Ne',sep ='++')
# sep dùng để thay thế khoảng trắng mặc định của print 
An Ne
An++Ne
print('An','Ne')
print('alo')
print('An','Ne', end ='+')
print('alo')
# bình thường 2 print sẽ bị xuống dòng như thêm end là = xuống dòng và cs thể thay thế xuống dòng bằng cái khác
An Ne
alo
An Ne+alo
from time import sleep
print('An.....')
sleep(10)
print('oiiii')
# sleep dùng để cho lệnh print chờ theo 1 khoảng thời gian nhất định
An.....
oiiii
with open('printtext.txt', 'W') as f:
    print ('print An ne', file = f)
#......
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[181], line 1
----> 1 with open('printtext.txt', 'W') as f:
      2     print ('print An ne', file = f)

File f:\anaconda\Lib\site-packages\IPython\core\interactiveshell.py:324, in _modified_open(file, *args, **kwargs)
    317 if file in {0, 1, 2}:
    318     raise ValueError(
    319         f"IPython won't let you open fd={file} by default "
    320         "as it is likely to crash IPython. If you know what you are doing, "
    321         "you can use builtins' open."
    322     )
--> 324 return io_open(file, *args, **kwargs)

ValueError: invalid mode: 'W'

2.2.1.12. Input function in python#

value = input()
print('taaa: ', value)
# input khi chạy sẽ hiện ra dòngđể mình điền vào
 AN
taaa:  AN
int_num = input('Enter an interger: ')
print('Type of int_num', type(int_num))
# cho thấy rằng kiểu dữ liệu mình đưa vào sẽ đầu ra là kiểu string
Enter an interger:  7
Type of int_num <class 'str'>

2.2.1.13. Boolean in python#

print(3>1)
print(3>1 & 1<-1)
print(241 == 141+100)
print('An' == 'An')
print(ord('a'))
print('a'>'ABC')
# đây là so sánh a với A nếu a > A thì suy ra là True luôn
# ord để cho ra giá trị của chữ lên dễ hiểu cách so sánh kiểu string hơn
True
False
True
True
97
True
lst = [1, 2, 3]
lst_ = [1, 2, 3]
print(lst == lst_)
print(lst is lst_)
_lst = lst
print(id(lst))
print(id(_lst))
print(lst is _lst)
# is kiểu là 'là' lên phải giống nhau hoàn toàn có thể rõ hơn ở VD trên
True
False
2256056751488
2256056751488
True
a = 99
b = 99
print(a is b)
# ta có thể thấy chúng so sánh bằng cách id() nhưng id chỉ thỏa mãn số từ -5 đến 256 còn nằm ngoài thì kq sẽ khác nhau
True
print(True and True)
print(False and True)
print(False and False)
print(True or True)
print(True or False)
print(False or True)
print(False or False)
print(not True)
print(not False)
# or và and và not
True
False
False
True
True
True
False
False
True
print(bool(0))
print(bool())
print(bool(None))
print(bool(1))
print(bool('a'))
# 0, Nỏn, rỗng thì kiểu bool sẽ ra False nhưng các trường hợp còn lại đều ra True
False
False
False
True
True
a = 4 
print(1<a<6)
b= -4
print(b<-3<-1<a<6)
True
True
k = 4
print(k in (3,4,5))
True

2.2.1.14. Branching structure in python#

a = 0
b = -6
if a - 1 < 0:
    print('a nhỏ hơn 1')
if b - 1 < 0:
    print('b nhỏ hơn 1')
a nhỏ hơn 1
b nhỏ hơn 1
a = 3
b = -6
if a - 1 < 0:
    print('a nhỏ hơn 1')
    if b - 1 < 0:
        print('b nhỏ hơn 1')
# ở trên gọi là if lồng nó chỉ chạy tiếp khi if ban đầu đúng r mới chạy if thứ 2
a = 0
b = -6
if a - 1 < 0:
    print('a nhỏ hơn 1')
    if b - 1 < 0:
        print('b nhỏ hơn 1')
# ở trên gọi là if lồng 
a nhỏ hơn 1
b nhỏ hơn 1
a = 3
if a - 1 < 0:
    print('a nhỏ hơn 1')
elif a - 2 < 0:
    print('a nhỏ hơn 2')
elif a - 3 < 0:
    print('a nhỏ hơn 3')
elif a - 4 < 0:
    print('a nhỏ hơn 4')
elif a - 5 < 0:
    print('a nhỏ hơn 5')
else:
    print('Khong biet')
# đây là if elif và else ta có thể k cần elsse cũng đc và elif nó vô tận
a nhỏ hơn 4
a = 3
if a - 1< 0:
    print('a nhỏ hơn 1')
else:
    print('a lớn hơn 1')
a lớn hơn 1
a = 3
if a - 1 > 0: print('a lớn hơn 1'); print('a lớn hơn cả 0')
# ta có thể viết liền như trên nếu lười enter xuống dòng.
a lớn hơn 1
a lớn hơn cả 0

2.2.1.15. While in python#

k = 5
while k > 0:
    print('k=', k)
    k -= 1
k= 5
k= 4
k= 3
k= 2
k= 1
s = 'Nguyen Duy AN'
idx = 0
length = len(s)
while idx < length:
    print(idx, 'stands for', s[idx])
    idx += 1
0 stands for N
1 stands for g
2 stands for u
3 stands for y
4 stands for e
5 stands for n
6 stands for  
7 stands for D
8 stands for u
9 stands for y
10 stands for  
11 stands for A
12 stands for N

2.2.1.15.1. Break, continue, else of while in python#

five_even_number = []
k_number = 1
while True:
    if k_number % 2 == 0:
        five_even_number.append(k_number)
        if len(five_even_number) == 5:
            break
    k_number += 1
print(five_even_number)
[2, 4, 6, 8, 10]
k_number = 0
while k_number < 10:
    k_number += 1
    if k_number % 2 == 0:
        continue
    print(k_number, 'is odd number')
print(k_number)
1 is odd number
3 is odd number
5 is odd number
7 is odd number
9 is odd number
10
k = 0
while k < 3:
    print('value of k is', k)
    k += 1
else:
    print('k is not less than 3 anymore')
value of k is 0
value of k is 1
value of k is 2
k is not less than 3 anymore

2.2.1.16. For in python#

length = 3
inter_ = (x for x in range(length))
c = 0
while c < length:
    print(next(inter_))
    c += 1
0
1
2
length = 3
inter_ = (x for x in range(length))
c = 0
while 1:
    try:
        print(next(inter_))
    except StopIteration:
        break
0
1
2
iter_ = (x for x in range(3))
for value in iter_:
    print('->', value)
-> 0
-> 1
-> 2
Annaaa = {'name' : 'An','age' :21}
print(Annaaa.items())
dict_items([('name', 'An'), ('age', 21)])
Annaaa = {'name' : 'An','age' :21}
list_value = list(Annaaa.items())
print(list_value)
print(list_value[1])
print(list_value[0])
[('name', 'An'), ('age', 21)]
('age', 21)
('name', 'An')
Annaaa = {'name' : 'An','age' :21}
for key, value in Annaaa.items():
    print(key, '->' , value)
name -> An
age -> 21

2.2.1.16.1. Break, continue of for in python#

Annaaa = {'name' : 'An','age' :21}
for key, value in Annaaa.items():
    print(key, '->' , value)
    if (key == 'name'):
        break
name -> An
s = "nguyen duy an"
for ch in s:
    if ch == ' ':
        break
    else:
        print(ch)
n
g
u
y
e
n
s = "nguyen duy an"
for ch in s:
    if ch == ' ':
        continue
    else:
        print(ch)
n
g
u
y
e
n
d
u
y
a
n

2.2.1.16.2. Else of for in python#

for k in (1,2,3):
    print(k)
else:
    print('Done!')
1
2
3
Done!
for k in (1,2,3):
    print(k)
    if k % 2 == 0:
        break
else:
    print('Done!')
1
2
for k in (1,2,3):
    print(k)
    if k % 2 == 0:
        continue
else:
    print('Done!')
1
2
3
Done!

2.2.1.16.3. Range of For in python#

k = range(3)
print(type(k))
print(k[2])
<class 'range'>
2
print(list(range(2,5)))
[2, 3, 4]
print(list(range(999)))
[0, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998]
k = range(99)
print(88 in k)
print(100 in k)
True
False
lst = [5, (1,2,3), {'avd' :'aaa'}]
for i in range(len(lst)):
    print(lst[i])
5
(1, 2, 3)
{'avd': 'aaa'}
lst = [1, 2, 3]
for value in range(len(lst)):
    lst[value] += 1
print(lst)
[2, 3, 4]
student_list = ['Long', 'Giàu', 'Trung', 'Thanh']
for idx , student in enumerate(student_list, 9):
    print(idx, '=>' , student)
# enumerate là cho biến mà mình muốn dùng và dấu phẩy ở sau là bắt đầu bằng số nào
9 => Long
10 => Giàu
11 => Trung
12 => Thanh

2.2.1.17. Functions def in Python#

#VD:
def kteam():
    pass
print(kteam())
None
#VD:
def kteam():
    print('Hello An')
kteam()
kteam()
Hello An
Hello An
#VD:
def Ann():
    print('Nguyen Duy')
    print('An')
Ann()
Ann()
Ann()
Nguyen Duy
An
Nguyen Duy
An
Nguyen Duy
An
def An(text):
    print(text)
An('NguyenDuyAn')
## parameter là cái text đó nha
NguyenDuyAn
def An(text, age):
    print(text)
    print(age)
An('NguyenDuyAn', 27)
NguyenDuyAn
27
def An(text, age):
    print(text)
    print(age)
An('NguyenDuyAn')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[184], line 4
      2     print(text)
      3     print(age)
----> 4 An('NguyenDuyAn')

TypeError: An() missing 1 required positional argument: 'age'
def An(age, text = 'Kter'):
    print(text)
    print(age)
An(27)
An(10,'k9')
# có thể làm như trên
Kter
27
k9
10
def An(text = 'Kter', age):
    print(text)
    print(age)
An(27)
# k đc truyền vào đằng trc của biến An
  Cell In[186], line 1
    def An(text = 'Kter', age):
                          ^
SyntaxError: parameter without a default follows parameter with a default
def f(kteam = []):
    kteam.append('F')
    print(kteam)
f()
f()
f()
f()
f()
['F']
['F', 'F']
['F', 'F', 'F']
['F', 'F', 'F', 'F']
['F', 'F', 'F', 'F', 'F']
def An(a, b, c, d):
    pass # lệnh giữu chỗ
An(3, 'Free', d = 1, c = 5)
print(sorted([3, 4, 1], reverse = True))
[4, 3, 1]
def Teo(a, b=2, c=3, d=4):
    f = (a + d) * (b + c)
    print(f)
Teo(1, d = 5)
30
def An(pos_or_key_arg, *,key_arg1 = 1, key_arg2 = 2):
    print(pos_or_key_arg)
    print(key_arg1)
    print(key_arg2)
An(1,key_arg1 = 2, key_arg2 = 'Vip')
1
2
Vip
def kteam(k, t, e, r):
    print(k)
    print(t, e)
    print('end', r)
lst = ['123', 'Kteam', 69.69, 'Henry']
kteam(lst[0], lst[1], lst[2], lst[3])
123
Kteam 69.69
end Henry
def kteam(k, t, e, r):
    print(k)
    print(t, e)
    print('end', r)
lst = ['123', 'Kteam', 69.69, 'Henry']
kteam(*lst)
# dùng cách truyền bằng * như kia làm nó hiểu là truyền tuần tự và truyền như kia nhanh hơn
123
Kteam 69.69
end Henry
def kteam(k, t, e, r):
    print(k)
    print(t, e)
    print('end', r)
lst = ['123', 'Kteam', 69.69]
kteam(*lst, 'henry')
123
Kteam 69.69
end henry
def kteam(k, t, e, *, r = 'kter'):
    print(k)
    print(t, e)
    print('end', r)
lst = ['123', 'Kteam', 69.69]
kteam(*lst, r = 'henry')
123
Kteam 69.69
end henry
def kteam(*args):
    print(args)
    print(type(args))
kteam('Kteam', 69.96, 'Hennry')
('Kteam', 69.96, 'Hennry')
<class 'tuple'>
def kteam(*args):
    print(args)
    print(type(args))
kteam(*(x for x in range(70)))
(0, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69)
<class 'tuple'>
def kteam(*args, kter):
    print(args)
    print(kter)
kteam(*(x for x in range(70)), kter = 'Anna')
(0, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69)
Anna
def kteam(a,b):
    print(a)
    print(b)
dic = {'name':'An', 'Memmber':69}
kteam(*dic)
name
Memmber
def kteam(a,b):
    print(a)
    print(b)
dic = {'name':'An', 'Memmber':69}
kteam(*dic)
# làm như này k đc ta phải tên biến là tên key của nó xem ở dưới
name
Memmber
def kteam(name, Memmber):
    print('name = >', name)
    print('Memmber = >', Memmber)
dic = {'name':'An', 'Memmber':69}
kteam(**dic)
name = > An
Memmber = > 69
def kteam(**kwargs):
    print(kwargs)
    print(type(kwargs))
kteam(name = 'Kteam', member = 69)
{'name': 'Kteam', 'member': 69}
<class 'dict'>
def kteam(**kwargs):
    for key, value in kwargs.items():
        print(key, '=>', value)
kteam(name = 'Kteam', member = 69)
name => Kteam
member => 69
Kteam = 'Anne'
def say_slogan():
    print('Nguyen Duy', Kteam)
say_slogan()
Nguyen Duy Anne
def say_slogan():
    Kteam = 'Anne'
    print('Nguyen Duy', Kteam)
say_slogan()
Nguyen Duy Anne
num = 69
st = 'How Kteam'
lst = [1, 2, 3]
tup = tuple('education')
def change(parameter):
    parameter = 'New value'
    print('changed successfully!')
change(num)
change(st)
change(lst)
change(tup)
print('*' *10)
print('{}\n{}\n{}\n{}\n'.format(num, st, lst,tup))
changed successfully!
changed successfully!
changed successfully!
changed successfully!
**********
69
How Kteam
[1, 2, 3]
('e', 'd', 'u', 'c', 'a', 't', 'i', 'o', 'n')
lst = ['How Kteam', 1, 2]
def change(parameter):
    parameter[1] = 'New value'
    print('changed successfully!')
print(lst)
change(lst)
print(lst)
['How Kteam', 1, 2]
changed successfully!
['How Kteam', 'New value', 2]

2.2.1.17.1. Global in def#

def make_slogan():
    global kteam
    kteam = 'How kteam'
make_slogan()
print(kteam)
# global có tác dụng tạo ra các biến toàn cục để tái sử dụng lại hoặc khởi tạo chương trình
How kteam
def  make_global():
    global x
    x = 1
def local():
    x = 5
    print('x in local', x)
make_global()
print(x)
local()
print(x)
1
x in local 5
1

2.2.1.17.2. Return in def#

def cal_rec_per(width, height):
    per = (width + height)*2
    return per
rec_1_width = 5
rec_1_height = 3
rec_1_per = cal_rec_per(rec_1_width, rec_1_height)
print(rec_1_per)
print(cal_rec_per(7,4))
# như VD t có thể thấy returrn per , per đã đc dùng lại để tính cal_rec_per(7,4)
16
22
def _return_ter_func():
    print('chúng ta sử dụng return để ngắt hàm')
    return
    print('Hàm print này dĩ nhiên k đc gọi')
none = _return_ter_func()
print(type(none))
chúng ta sử dụng return để ngắt hàm
<class 'NoneType'>
def cal_rec_area_per(width, height):
    perimeter = (width + height)*2
    area = width * height
    return perimeter, area
rec_width = 3
rec_height = 9
rec_per, rec_area = cal_rec_area_per(rec_width, rec_height)
print(rec_per, rec_area)
24 27

2.2.1.17.3. Yield in def#

def square(lst):
    sq_lst = []
    for num in lst:
        sq_lst.append(num**2)
    return sq_lst
kteam_ret = square([1, 2, 3])
for value in kteam_ret:
    print(value)
1
4
9
def square(lst):
    sq_lst = []
    for num in lst:
        yield num**2
kteam_ret = square([1, 2, 3])
for value in kteam_ret:
    print(value)
1
4
9
def gen():
    for value in range(3):
        print('yield', value + 1, 'time')
        yield value
for value in gen():
    print(value)
yield 1 time
0
yield 2 time
1
yield 3 time
2
def gen():
    yield 'kteam'
    print('this is the second yield')
    yield 'Free education'
    print('this is the last yield')
    yield 'Long đẹp trai'
    print('will not return anything')
for value in gen():
    print(value)
kteam
this is the second yield
Free education
this is the last yield
Long đẹp trai
will not return anything
def gen():
    while True:
        x =yield
        yield x ** 2
g = gen()
next(g)
print(g.send(2))
next(g)
print(g.send(10))
# send kiểu thay x = giá trị trong send rồi chạy 
4
100

2.2.1.17.4. Lambda in def#

 def ave(a, b, c):
    return (a+b+c)/3
print(ave(1,3,2))
2.0
ave = lambda a, b, c: (a+b+c)/3
print(ave(1, 3, 2))
2.0
x_power_a = lambda x, a=2: x ** a
print(x_power_a(2,5))
32
def kteam():
    men = lambda x: x + 'is a member of kteam'
    return men
call_men = kteam()
print(call_men('Long '))
Long is a member of kteam
kteam_lst = [lambda x : x**2, lambda x: x**3, lambda x: x**4]
print(kteam_lst[1](2))
8
kteam_lst = [lambda x : x**2, lambda x: x**3, lambda x: x**4]
for func in kteam_lst:
    print(func(3))
9
27
81
key = 'kteam'
print({'Google': lambda: 'gooooog',
 'youtube': lambda:'youuuuu',
 'kteam': lambda:'freeee'}[key]())
freeee
find_greater = lambda x, y: x if x > y else y
print(find_greater(1,2))
2
cd_of_2_3 = lambda x:(1 if x % 3 == 0 else 0) if x % 2 ==0 else 0
print(cd_of_2_3(6))
1
def kteam(first_string):
    return lambda second_string: first_string + second_string
slogan = kteam('HowKteam')
print(slogan('free'))
HowKteamfree

2.2.1.18. Functions in python#

2.2.1.18.1. Map in python#

def inc(x) : return x+1
kteam = [1,2,3,4]
print(list(map(inc, kteam)))
[2, 3, 4, 5]
kteam = [1,2,3,4]
print(list(map(lambda x: x+1, kteam)))
[2, 3, 4, 5]
inc = lambda x: x + 1
kteam = [1, 2,3,4]
print([inc(x) for x in kteam])
[2, 3, 4, 5]
func = lambda x,y : x+y
kteam_1 = [1, 2, 3, 4]
kteam_2 = [5, 6, 7, 8]
kteam = map(func, kteam_1, kteam_2)
print(list(kteam))
[6, 8, 10, 12]

2.2.1.18.2. filter in python#

func = lambda x: x > 0
kteam = [1, -3, 5, 0, 2, 6, -4, -9]
print(list(filter(func, kteam)))
[1, 5, 2, 6]

2.2.1.18.3. Reduce in python#

from functools import reduce
kteam_add = lambda x,y: x + y
kteam = [1, 2, 3, 4, 5]
print(reduce(kteam_add, kteam))
15
from functools import reduce
kteam = [1, 2, 3, 4]
kteam_add = lambda x, y: x+y
kteam_multi = lambda x,y : x*y
print(reduce(kteam_add, kteam, 10))
print(reduce(kteam_multi, kteam, 10))
20
240

2.2.1.19. Recursion in python#

def cal_sum(lst):
    if not lst:
        return 0
    else:
        return lst[0] + cal_sum(lst[1:])
print(cal_sum([1,2,3,4]))
print(cal_sum([1,2,3,4,5]))
10
15
def cal_sum(lst):
    return 0 if not lst else lst[0] + cal_sum(lst[1:])
print(cal_sum([1,2,3]))
6
def cal_sum(lst):
    idx0, *r = lst
    return idx0 if not r else idx0 + cal_sum(r)
print(cal_sum([1,2,3]))
6
def cal_sum(lst):
    idx0, *r = lst
    return idx0 if not r else idx0 + cal_sum(r)
print(cal_sum([[1,2],[3,4],[5,6]]))
[1, 2, 3, 4, 5, 6]
def cal_sum(lst):
    if not lst: return 0
    return call_cal_sum(lst)
def call_cal_sum(lst):
    return lst[0] + cal_sum(lst[1:])
print(cal_sum([1,2,3,4,5]))
15