Cài đặt môi trường phát triển python

Cài đặt python

Thêm lựa chọn “Add Python to PATH” khi cài đặt Python

Tạo mới và chạy thử một chương trình

Từ menu start của Windows tìm ứng dụng IDLE và mở ứng dụng này

Gõ vào cửa sổ một lệnh để chạy thử:

print('Hello')

Cửa sổ ứng dụng IDLE

Chạy chương trình từ File :

Từ Menu File, chọn New File, chương trình sẽ tạo ra một cửa sổ soạn thảo mới, nhập vào cửa sổ này nội dung một chương trình đơn giản, ví dụ:

# program_01.py
x =
1
y =
2
z = x + y
print(
f'{x} + {y} = {z}')

Chạy thử chương trình

 

Tạo mới một chương trình

Lưu lại chương trình thành file (ví dụ program_01.py), sau đó chạy chương trình bằng cách từ Menu Run, chọn Run Module (F5). Chương trình sẽ chạy và in kết quả ra cửa sổ IDLE:

Kết quả chạy chương trình được in ra cửa sổ IDLE

Lập trình Python cơ bản

Khai báo biến

Trong python, việc khai báo biến được thực hiện bằng cách gán giá trị khởi đầu cho một biến:

bien = <gia_tri>

Ví dụ :

# add_number.py
x =
1
y =
2
z = x + y

Sau khi được khai báo, giá trị của biến có thể được thay đổi bằng cách gán lại một biểu thức mới cho biến:

# update_vars.py
x =
1
x =
2
x = x +
1

Vào ra dữ liệu

Đọc dữ liệu từ bàn phím

Lệnh input được sử dụng để nhập dữ liệu từ bàn phím. Dữ liệu trả về của lệnh là một biến string chứa dòng văn bản mà người dùng đã nhập vào:

giatri = input('Nhập giá trị cho biến : ')

Ví dụ 1

# hello.py
ten = input(
'Mời bạn cho biết tên của bạn : ')
print(
'Xin chào ', ten)

Chạy thử chương trình

Ví dụ 2:

# input_and_add_2_number.py
a = input(
'Số thứ nhất : ')
a = float(a)

b = input(
'Số thứ hai : ')
b = float(b)

print(
'Tổng của 2 số là : ', a+b)

Chạy thử chương trình

In dữ liệu ra màn hình

Lệnh print được sử dụng để in dữ liệu ra màn hình, cú pháp của lệnh này như sau:

print(<danh sách giá trị ngăn cách nhau bởi dấu phẩy>)

Ví dụ:

# print_vars.py
x =
1
y =
2
z = x + y
print(x,
'+', y, '=', z)

Chạy thử chương trình

Lệnh điều khiển if

Cấu trúc lệnh if

Các cấu trúc if trong Python:

    <Lệnh>

    <Lệnh 1>

else:

    <Lệnh 2>

    <Lệnh 1>

elif <điều kiện 2>  :

    <Lệnh 2>

elif <điều kiện 3>  :

    <Lệnh 3>

else:

    <Lệnh 4>

Lưu ý:

Điều kiện logic trong lệnh if

Điều kiện logic trong lệnh if về bản chất là một biểu thức, nhưng chỉ nhận một trong hai giá trị True/False . Điều kiện này thường được tạo ra từ các phép toán :

 

Một số ví dụ minh họa

Ví dụ 1:

Nhập vào từ bàn phím 2 số và in ra giá trị nhỏ hơn trong 2 số đó

# find_smaller_number.py
a = input(
'Số thứ nhất : ')
a = float(a)

b = input(
'Số thứ hai : ')
b = float(b)

if a < b:
  print(a)

else:
  print(b)

Chạy thử chương trình

Ví dụ 2:

Chỉ số BMI (Body mass index) dùng để đánh giá thân hình của một người. Chỉ số này được đo bằng tỉ số giữa cân nặng (tính theo kg) và bình phương của chiều cao (tính theo mét). Dựa vào chỉ số BMI, người ta có thể đánh giá được thân hình của một người:

 

 

Nhập vào giá trị chiều cao và cân nặng của một người từ bàn phím và cho biết tình trạng thân hình của người đó.

# bmi_calculate.py
height = input(
'Chiều cao (mét) : ')
height = float(height)

mass = input(
'Cân nặng (kg) : ')
mass = float(mass)

bmi = mass / (height * height)

if bmi < 16:
   print(
'Thân hình gầy')

elif bmi < 18.5:
   print(
'Thân hình hơi gầy')

elif bmi < 25:
   print(
'Thân hình bình thường')

elif bmi < 30:
   print(
'Thân hình hơi béo')

else:
   print(
'Thân hình béo')

        Chạy thử chương trình

Vòng lặp for

Cấu trúc vòng lặp for

Lệnh for được dùng để thực hiện một vòng lặp với số lần lặp biết trước. Cấu trúc lệnh for như sau:

 

for bien_lap in tap_gia_tri:

    <khoi_lenh>

Cách biểu diễn tập giá trị lặp trong vòng lặp for

range(<end>)

Biểu thức này thể hiện tập các số nguyên từ 0 đến trước giá trị <end>,(tức <end-1>)

Ví dụ:

range(5) → 0, 1, 2, 3, 4

range(start, end)

Biểu thức này thể hiện tập các số nguyên từ <start> đến <end-1>

Ví dụ:

range(1, 5) → 1, 2, 3, 4

range(start, end, increment)

Biểu thức này thể hiện tập các số nguyên từ <start> đến <end-1> và tăng đều với khoảng cách increment.

Ví dụ:

range(0, 10, 2) → 0, 2, 4, 6, 8

Một số ví dụ minh họa

Ví dụ 1:

Tính tổng các số từ 1 đến 100

# sum_1_to_100.py
S =
0
for i in range(1, 101):
   S += i

print(
'S = ', S)

Chạy thử chương trình

Ví dụ 2:

Viết chương trình in ra bảng cửu chương

# bang_cuu_chuong.py
for i in range(2, 10):
   
for j in range(2, 10):
       print(i,
'*', j, '=', i*j)
   print()

Chạy thử chương trình

Vòng lặp while

Cấu trúc vòng lặp while

Lệnh lặp while dùng để thực hiện một vòng lặp với số lần lặp không biết trước. Cấu trúc lệnh while như sau:

 

while dieu_kien:

    <khoi_lenh>

Một số ví dụ minh họa

Ví dụ 1:

Kiểm tra một số có phải số nguyên tố không

# prime_check.py
x = int(input(
'x='))

i =
2
while i * i <= x:
   
if x % i == 0:
       j = x // i
       print(x,
'=', i , '*', j)
       exit()
   i +=
1

print(x,
' là số nguyên tố')

Chạy thử chương trình

Ví dụ 2:

Chuyển một số từ hệ thập phân sang hệ nhị phân

# decimal_to_binary.py
x = int(input(
'x='))

s =
''

while x > 0:
   i = x %
2
   s = str(i) + s
   x = int(x/
2)

print(s)

Chạy thử chương trình

Kiểu dữ liệu số

Trong Python có 2 kiểu số : số nguyên (int) và số thực (float)

Kiểu số nguyên (int)

Số nguyên là các giá trị số không chứa dấu phẩy:

# int_test.py
x =
1
y =
2
z =
-10000

Các phép tính trên kiểu số nguyên:

Với Python 3, phép chia 2 số nguyên cho kết quả là một số thập phân:

>>> print(4/3)
1.3333333333333333

   

Phép tính dạng rút gọn:

Các phép tính +=, -=, *=, /=, //=, %=, **=, … được sử dụng để tính giá trị phép tính trên 2 biến và gán kết quả vào biến thứ nhất:

Phép lấy giá trị tuyệt đối

Hàm abs được dùng để lấy giá trị tuyệt đối một số:

>>> print(abs(-10))
10

Kiểu số thập phân(float)

Số thập phân là các số có chứa dấu phẩy :

# float_test.py
x =
1.0
y =
10.5
z =
9e38

Các phép tính trên số thập phân

Tương tự số nguyên, số thập phân cũng có các phép tính +, -, *, //, /, %, **, abs, các phép tính rút gọn. Ngoài ra trên số thập phân còn có các phép tính sau:

Phép làm tròn số

Hàm round được dùng để làm tròn một số thập phân:

>>> print(round(4/3, 2)) # làm tròn đến 2 chữ số sau dấu phẩy
1.33

Hàm này còn cho phép làm tròn tới một số lượng chữ số nhất định sau dấu phẩy:

>>> print(round(4/3, 2)) # làm tròn đến 2 chữ số sau dấu phẩy
1.33

Kiểu dữ liệu string

Khai báo biến string

Trong Python, giá trị của kiểu dữ liệu String được đặt trong cặp 2 dấu nháy đơn (') hoặc 2 dấu nháy kép (") :

# string_test.py
hoten =
'Nguyễn Văn An'
diachi =
"Hà Nội"

Một số hàm xử lý trên dữ liệu String

Ví dụ:

>>> str(100)
'100'

Ví dụ:

>>> 'Chào ' + 'bạn'
'Chào bạn'

Ví dụ:

>>> 'Chào bạn'.lower()
'chào bạn'

Ví dụ:

>>> 'Chào bạn'.upper()
'CHÀO BẠN'

Ví dụ:

>>> 'Tôi sống ở Hà Nội'.replace('Hà Nội', 'Huế')
'Tôi sống ở Huế'

Ví dụ:

>>> 'Hà Nội'.split()
[
'Hà', 'Nội']
>>> 'Hà Nội, Việt Nam'.split(',')
[
'Hà Nội', ' Việt Nam']

Ví dụ:

>>> '   Hà Nội    '.strip()
'Hà Nội'

Ví dụ:

>>> len('Chào bạn')
8

Truy nhập từng ký tự của string

Một giá trị string được tạo thành từ một dãy các kí tự, để lấy ký tự ở vị trí index (bắt đầu từ 0) của một giá trị string, chúng ta dùng cú pháp:

c = text[index]

Bản thân một giá trị string có thể xem là một tập hợp kí tự và có thể dùng vòng lặp for chạy qua tập ký tự này

Ví dụ :

# string_iterate.py
text =
'Chào bạn'

for c in text:
   print( c )

Chạy thử chương trình

Substring

Mỗi đoạn nhỏ của một giá trị string được gọi là substring. Bản thân mỗi substring cũng là một giá trị kiểu string.

Các cách để lấy ra substring trong Python:

text[start:end]

Biểu thức này trả về đoạn ký tự từ vị trí start đến end-1 của string gốc.

Ví dụ:

>>> text = 'Chào bạn'; print(text[0:4])
Chào

text[start:]

Biểu thức này trả về đoạn ký tự từ vị trí start đến hết string gốc.

Ví dụ:

>>> text = 'Chào bạn'; print(text[5:])
bạn

text[:end]

Biểu thức này trả về đoạn ký tự từ đầu đến vị trí end của string gốc.

Ví dụ:

>>> text = 'Chào bạn'; print(text[:4])
Chào

Ví dụ:

>>> text = 'Chào bạn'; print(text[-3:])
bạn

Format string

Để ghép nhiều giá trị string thành một có thể dùng phép cộng string như đã trình bày ở phía trên:

# concat_string.py
x =
1
y =
2
z =
3
st =
'Tổng của ' + str(x) + ' và ' + str(y) + ' là ' + str(z)
print(st)

Chạy thử chương trình

Tuy nhiên việc cộng nhiều string sẽ làm chương trình khó theo dõi, do đó có thể dùng hàm format của kiểu dữ liệu string để ghép nhiều string (và các kiểu dữ liệu khác) với nhau.Cách thức hiện như sau:

# format_string.py
x =
1
y =
2
z =
3
st =
f'Tổng của {x} và {y} là {z}'
print(st)

Chạy thử chương trình

Một số ví dụ minh họa

Ví dụ:

Kiểm tra tính hợp lệ của mật khẩu (là một giá trị string). Mật khẩu hợp lệ nếu:

# password_validate.py
password = input(
'Nhập mật khẩu : ')

if len(password) < 6:
   print(
'Mật khẩu quá ngắn')
   exit()

c
o_chu_cai = False
for c in password:
   C = c.upper()
   
if (C >= 'A' and C <= 'Z'):
       
co_chu_cai = True
       
break

if not co_chu_cai:
   print(
'Mật khẩu cần chứa ít nhất một chữ cái (a-z/A-Z)')
   exit()

co_chu_so = False
for c in password:
   
if c >= '0' and c <= '9':
       
co_chu_so = True
       
break

if not co_chu_so:
   print(
'Mật khẩu cần chứa ít nhất một chữ số (0-9)')
   exit()

print(
'Mật khẩu hợp lệ !')

Chạy thử chương trình

Kiểu dữ liệu List và Tuple

Kiểu dữ liệu List

Kiểu dữ liệu List dùng để chứa một dãy nhiều phần tử. Khi khai báo giá trị, các phần từ của một List được đặt trong cặp dấu [ ].

Ví dụ:

# list_test.py
dayso = [
1, 3, 5, 7, 9]
ds_hoc_sinh = ["Nguyễn Văn An", "Nguyễn Chí Cường", "Nguyễn Mạnh Tuấn"]
diachi = [
322, "Tây Sơn", "Hà Nội"]

Các phần tử của một List có thể không cùng kiểu dữ liệu.

Một số phép tính trên kiểu dữ liệu List

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; print(len(ds))
5

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; ds.append(6); print(ds)
[
1, 2, 3, 4, 5, 6]

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; ds.remove(3); print(ds)
[
1, 2, 4, 5]

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; ds.extend([6, 7]); print(ds)
[
1, 2, 3, 4, 5, 6, 7]

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; ds += [6, 7]; print(ds)
[
1, 2, 3, 4, 5, 6, 7]

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; print(1 in ds)
True

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; print(3 not in ds)
False

Ví dụ:

>>> ds = [1, 2, 3, 4, 5] ; print(ds.index(3))
2

Ví dụ:

>>> ds = [1, 3, 2, 5, 4] ; print(min(ds))
1

Ví dụ:

>>> ds = [1, 3, 2, 5, 4] ; print(max(ds))
5

Truy nhập đến từng phần tử của List

Tương tự kiểu String, kiểu List cũng có thể truy nhập đến từng phần tử hoặc lấy ra các đoạn con bằng cách sử dụng các cấu trúc:

Sắp xếp một List

Để sắp xếp các phần tử trong một List theo một thứ tự tăng dần hoặc giảm dần có thể sử dụng hàm:

sorted(lst, reverse=True/False)

Các tham số cần truyền vào cho hàm sắp xếp:

Ví dụ:

>>> print(sorted([1, 3, 2, 5, 4]))
[
1, 2, 3, 4, 5]

>>> print(sorted([1, 3, 2, 5, 4], reverse=True))
[
5, 4, 3, 2, 1]

Một số ví dụ minh họa

Ví dụ :

Chuyển một số trong phạm vi 0-99 thành phát âm tiếng Việt. Ví dụ : 85 → tám mươi lăm

# number_to_text.py
bangso = [
'không', 'một', 'hai', 'ba', 'bốn', 'năm', 'sáu', 'bảy', 'tám', 'chín']

x = int(input(
'x='))

if x < 10:
   text = bangso[x]
else:
   chuc = x //
10
   donvi = x %
10

   text = (bangso[chuc] +
' mươi') if chuc > 1 else 'mười'   

   
if donvi > 0:
       text +=
' '

       
if donvi == 5:
           text +=
'lăm'

       
elif donvi == 1 and chuc > 1:
           text +=
'mốt'

       
else:
           text += bangso[donvi]

print(text)

Chạy thử chương trình

Kiểu dữ liệu Tuple

Dữ liệu kiểu bộ nhóm (Tuple) tương tự với kiểu danh sách (List), chỉ khác là các phần tử sau khi khai báo thì không sửa (thêm, xóa) được. Các phần tử của dữ liệu kiểu nhóm được đặt trong cặp dấu ( )

# tuple_test.py
dayso = (
1, 3, 5, 7, 9)
ds_hoc_sinh = ("Nguyễn Văn An", "Nguyễn Chí Cường", "Nguyễn Mạnh Tuấn")

Tuple chủ yếu được dùng để gộp và tách các biến đơn với nhau

>>> a, b = 1, 2
>>> print(a)
1
>>> print(b)
2

Kiểu dữ liệu Dictionary

Kiểu dữ liệu Dictionary dùng để chứa một bảng biến đổi 1-1 giữa 2 tập hợp :

 

Khai báo kiểu dữ liệu Dictionary

Cú pháp khai báo kiểu Dictionary trong Python:

d = {

    <key1> : <value1>,

    <key2> : <value2>,

    ...

}

Ví dụ:

# dict_test.py
d = {
"một" : 1, "hai" : 2, "ba" : 3}

Truy nhập phần tử của Dictionary

Để truy nhập đến phần tử có key là <key> trong Dictionary, Python sử dụng phép toán []:

d[<key>]

Ví dụ:

>>> d = {"một" : 1, "hai" : 2, "ba" : 3}; print(d['một'])
1

Trong trường hợp nếu giá trị <key> không nằm trong tập nguồn của Dictionary, Python sẽ đưa ra thông báo Exception:

>>> d = {"một" : 1, "hai" : 2, "ba" : 3}; print(d['bốn'])

Traceback (most recent call last):

  File "<pyshell#118>", line 1, in <module>

    d = {"một" : 1, "hai" : 2, "ba" : 3}; print(d['bốn'])

KeyError: 'bốn'

Để tránh gặp lỗi này, có thể dùng hàm get của Dictionary để truyền giá trị mặc định trong trường hợp <key> không nằm trong tập nguồn của Dictionary:

d.get(<key>, <gia_tri_mac_dinh>)

Ví dụ:

>>> d = {"một" : 1, "hai" : 2, "ba" : 3}; print(d.get('bốn', -1))
-1

Một số ví dụ minh họa

Ví dụ:

Chuyển đổi mã tháng tiếng anh 3 ký tự sang tiếng Việt:

        JAN → Tháng một

        FEB → Tháng hai

        MAR → Tháng ba

        APR → Tháng tư

        MAY → Tháng năm

        JUN → Tháng sáu

        JUL → Tháng bảy

        AUG → Tháng tám

        SEP → Tháng chín

        OCT → Tháng mười

        NOV → Tháng mười một

        DEC → Tháng mười hai

# month_convert.py
table = {
     
"JAN" : "Tháng một",
        
"FEB" : "Tháng hai",
        
"MAR" : "Tháng ba",
        
"APR" : "Tháng tư",
        
"MAY" : "Tháng năm",
        
"JUN" : "Tháng sáu",
        
"JUL" : "Tháng bảy",
        
"AUG" : "Tháng tám",
        
"SEP" : "Tháng chín",
        
"OCT" : "Tháng mười",
        
"NOV" : "Tháng mười một",
        
"DEC" : "Tháng mười hai"
}
month = input(
"Nhập mã tháng 3 ký tự tiếng Anh:")
if month in table:
   print(
'Tháng tiếng Việt:', table[month])
else:
   print(
'Mã không hợp lệ')

Chạy thử chương trình

Hàm (Function)

Khai báo hàm

Cấu trúc để khai báo hàm trong Python:

def tenham(<danh_sach_bien>):
   <noi_dung_ham>
   
return <ket_qua>

Ví dụ:

# square_function.py
def square(x):
 
return x*x

for i in range(1,11):
  print(
f'{i} * {i} = {square(i)}')

Chạy thử chương trình

Làm việc với ngày/giờ

Chuyển đổi từ thời gian sang string:

# format_datetime.py
from datetime import datetime

now = datetime.now()

print(now.strftime(
'%d-%m-%Y'))
print(now.strftime(
'%d/%m/%Y %H:%M:%S'))

Chạy thử chương trình

Ý nghĩa của các thành phần trong format:

Chuyển đổi string sang thời gian:

# parse_date.py
from datetime import datetime

dt1 = datetime.strptime(
'01/01/2020', '%d/%m/%Y')
print(dt1)

dt2 = datetime.strptime(
'01-01-2020 23:59:59', '%d-%m-%Y %H:%M:%S')
print(dt2)

        Chạy thử chương trình

Cộng thời gian

# add_date.py
from datetime import datetime, timedelta

dt1 = datetime(
2020, 2, 1)
duration = timedelta(days=
30, seconds=3600) # 30 ngày + 1 giờ
dt2 = dt1 + duration

print(dt2)

Chạy thử chương trình