Python-nang-cao – Không biết – Mục lục Ngôn ngữ lập trình Python Ngôn ngữ lập trình Python Dương – StuDocu

Mục lục

Ngôn ngữ lập trình Python

Ngôn ngữ lập trình Python

  • Dương Hoàng Huyên
  • CHƯƠNG 1. Giới thiệu ………………………………………………………………………………………………………………
      1. Tạo và thực thi một chương trình Python………………………………………………………………………….
      1. Các điểm nổi bật của Python ……………………………………………………………………………………………
      • 1.2. Kiểu dữ liệu …………………………………………………………………………………………………………….
      • 1.2. Tham chiếu đối tượng ………………………………………………………………………………………………
  • CHƯƠNG 2. Kiểu dữ liệu và thao tác nhập/xuất
      1. Định danh và từ khóa
      1. Số nguyên
      • 2.2. Kiểu int
      • 2.2. Kiểu bool
      1. Số thực
      • 2.3. Kiểu số thực dấu phẩy động (float)
      • 2.3. Kiểu số phức (complex)
      • 2.3. Số thập phân (decimal)
      1. Kiểu chuỗi (str)
      • 2.4. Cắt chuỗi
      • 2.4. Phương thức và phép toán trên chuỗi
      • 2.4. Định dạng chuỗi bằng phương thức str()
      • 2.4. Định dạng chuỗi bằng kí hiệu %
      1. Nhập xuất dữ liệu
      • 2.5. Nhập dữ liệu từ bàn phím hàm input……………………………………………………………………….
      • 2.5. In dữ liệu ra màn hình
      1. Ví dụ
      1. Bài tập………………………………………………………………………………………………………………………..
  • CHƯƠNG 3. Kiểu dữ liệu kết hợp
      1. Tuple
      • 3.1. Tuple đặt tên
      1. List
      • 3.2. Danh sách tổng quát
      1. Kiểu tập hợp
      • 3.3. Tập tổng quát
      • 3.3. Tập hợp cố định…………………………………………………………………………………………………….
      1. Kiểu ánh xạ
      • 3.4. Kiểu từ điển
      • 3.4. Từ điển ngầm định
      • 3.4. Kiểu từ điển có thứ tự
      1. Sao chép và duyệt trong kiểu kết hợp 2 Trường Đại học Quy Nhơn – Khoa Công nghệ thông tin
      • 3.5. Các hàm và phép toán hỗ trợ duyệt
      • 3.5. Sao chép kiểu dữ liệu kết hợp
      1. Bài tập
  • CHƯƠNG 4. Cấu trúc điều khiển và hàm
      1. Cấu trúc điều khiển
      • 4.1. Lệnh rẽ nhánh
      • 4.1. Lệnh lặp
      1. Quản lý ngoại lệ
      1. Hàm
      • 4.3. Tên hàm và docstring
      • 4.3. Tham số và đối số
      • 4.3. Hàm Lambda
      1. Module
      • 4.4. Module
      • 4.4. Gói……………………………………………………………………………………………………………………….
      1. Bài tập
  • CHƯƠNG 5. Module numpy
      1. Kiểu dữ liệu trong NumPy
      • 5.1. Tạo mảng trong NumPy
      1. Các thao tác cơ bản
      • 5.2. Một số thao tác cơ bản
      • 5.2. Thuộc tính của mảng trong NumPy
      • 5.2. Truy cập từng phần tử của mảng
      • 5.2. Trích chọn mảng
      • 5.2. Định hình lại mảng
      1. Ghép mảng và chia mảng
      • 5.3. Ghép nối các mảng
      • 5.3. Tách mảng
      1. Tính toán trên mảng trong NumPy
      • 5.4. Hàm Ufunc
      • 5.4. Hàm Ufunc nâng cao
      1. Tổng hợp dữ liệu
      • 5.5. Các hàm cơ bản
      • 5.5. Tổng hợp mảng nhiều chiều
      • 5.5. Ví dụ tổng hợp dữ liệu
      • 6.7. Ví dụ tổng hợp 4 Trường Đại học Quy Nhơn – Khoa Công nghệ thông tin
      1. Tổng hợp và nhóm dữ liệu
      • 6.8. Các hàm tổng hợp đơn giản trong Pandas
      • 6.8. Nhóm dữ liệu (groupby)
  • CHƯƠNG 7. Trực quan hóa với matplotlib
      1. Một số thao tác cơ bản
      • 7.1. Chèn matplotlib vào chương trình
      • 7.1. Tình huống thường sử dụng thư viện Matplotlib
      • 7.1. Lưu hình vẽ đến file
      1. Hai giao diện vẽ
      • 7.2. Giao diện giống MathLab………………………………………………………………………………………
      • 7.2. Giao diện hướng đối tượng
      1. Vẽ đường đơn giản
      • 7.3. Màu và kiểu đường vẽ
      • 7.3. Giới hạn trục
      • 7.3. Gán nhãn hình ảnh
      1. Vẽ biểu đồ phân tán
      • 7.4. Vẽ biểu đồ phân tán bằng hàm plt()
      • 7.4. Vẽ biểu đồ bằng plt()
      • 7.4. Plt() so với plt()
      1. Vẽ biểu đồ lỗi
      • 7.5. Hàm ErrorBar
      1. Đồ thị mật độ và đồ thị đường viền
      • 7.6. Hiển thị hàm ba chiều
      1. Histograms, Binnings và Density
      1. Tùy chỉnh chú thích cho hình vẽ
      1. Biểu đồ con
      • 7.9. Plt()
      • 7.9. Hàm plt()
      1. Vẽ hình ba chiều
      • 7.10. Vẽ điểm và đường 3D
      • 7.10. Đường đồng mức (contour) ba chiều
      • 7.10. Khung dây và mặt ngoài
  • CHƯƠNG 8. HỌC MÁY
      1. Giới thiệu
      • 8.1. Tại sao phải học máy
  • Dương Hoàng Huyên Mục lục
    – 8.1. Tại sao Python
    – 8.1. Scikit-learn
    – 8.1. Ví dụ đầu tiên: phân loại các loài cây Iris

      1. Học giám sát
      • 8.2. Một số tập dữ liệu mẫu
      • 8.2. Thuật toán K láng giềng gần nhất (k-NN)

Dương Hoàng Huyên

CHƯƠNG 1. Giới thiệu ………………………………………………………………………………………………………………

1. Tạo và thực thi một chương trình Python………………………………………………………………………….

Mã Python có thể được viết bằng bất kỳ trình soạn thảo văn bản thuần túy nào có
thể tải và lưu văn bản bằng cách sử dụng bảng mã ký tự ASCII hoặc UTF-8 Unicode.
Mặc định, các tệp Python được sử dụng mã hóa ký tự UTF-8. Các tệp Python thường có
phần mở rộng là .py, và các chương trình Python GUI (Giao diện Người dùng Đồ họa)
thường có phần mở rộng là .pyw, đặc biệt là trên Windows và Mac OS X. Trong tài liệu
này, tôi luôn sử dụng phần mở rộng của .py cho các chương trình console và module,
và .pyw cho các chương trình GUI.

Chỉ để đảm bảo rằng mọi thứ được thiết lập chính xác và để hiển thị ví dụ cổ điển
đầu tiên, hãy tạo một tệp có tên hello trong trình soạn văn bản thuần túy (Windows
Notepad), với nội dung sau:

#!/usr/bin/env python

print(“Hello”, “World!”)

Dòng đầu tiên là chú thích, trong Python chú thích bắt đầu bằng dấu #. Dòng thứ
hai là dòng trống, Python sẽ bỏ qua các dòng trống trong chương trình. Dòng thứ ba là
mã lệnh Python, ở ví dụ trên là gọi hàm print với hai tham số, mỗi tham số là một kiểu
chuỗi.

Mỗi câu lệnh xuất hiện trong file .py sẽ được thực hiện tuần tự, bắt đầu từ câu
lệnh đầu tiên đến câu lệnh cuối cùng.

Giả sử lưu chương trình Python trong thư mục C:\Py3eg, với tên file hello và
đóng chương trình soạn thảo. Để thực thi chương trình, ta có thể sử dụng chương trình
trình thông dịch Python và thông thường điều này được thực hiện bên trong cửa sổ lệnh
(Command Prompt). Khởi động cửa sổ lệnh và nhập phần:

C:>cd c:\py3eg
C:\py3eg>c:\python31\python hello

Ngôn ngữ lập trình Python

8 Trường Đại học Quy Nhơn – Khoa Công nghệ thông tin

Kết quả xuất hiện trên màn hình:

Hello World!

1. Các điểm nổi bật của Python ……………………………………………………………………………………………

1.2. Kiểu dữ liệu …………………………………………………………………………………………………………….

Một điều cơ bản mà bất kỳ ngôn ngữ lập trình nào cũng phải có đó là biểu diễn dữ
liệu. Python cung cấp một số kiểu dữ liệu tích hợp sẵn, nhưng chúng ta sẽ tìm hiểu hai
kiểu cơ bản sau. Python biểu diễn các số nguyên (số nguyên dương và âm) bằng cách
sử dụng kiểu int và biểu diễn các chuỗi (chuỗi ký tự Unicode) sử dụng kiểu str. Ví dụ:

  • 2106245833371143733958360553673408646377901908010982225086219550720
    “Infinitely Demanding”
    ‘Simon Critchley’
    ‘positively αβγ ÷©’

Số thứ hai được hiển thị là 2217, kích thước số nguyên của Python chỉ bị giới hạn
bởi bộ nhớ máy, không phải bởi một số byte cố định. Các chuỗi có thể được xác định
bằng dấu ngoặc kép hoặc đơn, miễn là cùng một loại được sử dụng ở cả hai đầu và vì
Python sử dụng Unicode, các chuỗi không bị giới hạn ở các ký tự ASCII, như chuỗi gần
cuối thể hiện.

Python sử dụng dấu ngoặc vuông ([]) để truy cập một kí tự từ một chuỗi. Ví dụ:
nếu chúng ta đang ở trong Python Shell (trong trình thông dịch tương tác hoặc trong
IDLE), chúng ta có thể nhập như sau:

>>> “Hard Times”[5]
‘T’
>>> “giraffe”[0]
‘g’

Trong Python, cả str và các kiểu số cơ bản như int đều không thay đổi được,
nghĩa là, sau khi được đặt, giá trị của chúng không thể thay đổi, chúng ta không thể sử
dụng chúng để đặt một ký tự mới.

Để chuyển đổi dữ liệu từ kiểu này sang kiểu khác, chúng ta có thể sử dụng cú pháp
datatype(item). Ví dụ:

>>> int(“45”)
45
>>> str(912)

Dương Hoàng Huyên 11

CHƯƠNG 2. KIỂU DỮ LIỆU VÀ THAO TÁC NHẬP/XUẤT

2. 1. Định danh và từ khóa

Định danh trong Python là chuỗi kí tự khác rỗng có độ dài bất kì bắt đầu bởi một
chữ cái sau đó có thể là chữ cái hoặc chữ số, dấu gạch dưới, … các kí tự trong bộ mã
unicode. Định danh có phân biệt chữ hoa, chữ thường. Định danh không được trùng với
các từ khóa sau:
and continue except global lambda pass while
as def False if None raise with
assert del finally import nonlocal return yield
break elif for in not True
class else from is or try

2. 2. Số nguyên

      1. Kiểu int
        Kích thước của một số nguyên chỉ bị giới hạn bởi bộ nhớ của máy, vì vậy, có thể
        dễ dàng tạo và làm việc với các số nguyên dài hàng trăm chữ số, mặc dù chúng sẽ chậm
        sử dụng hơn so với các số nguyên truyền thống.

Bảng 2. Các phép toán và hàm trên kiểu số.
Cú pháp Mô tả
x + y Cộng số x và số y
x – y Trừ số x cho y
x * y x nhân y
x / y Chia x cho y; sinh ra số thực hoặc số phức (nếu x hoặc y là số phức)
x // y Chia x cho y, làm tròn phần thập phân vì vậy kết quả luôn là số
nguyên
x % y Chia lấy phần dư x cho y
x ** y x mũ y
-x Đổi dấu
+x Không làm gì
abs(x) Trị tuyệt đối của x

CHƯƠNG 2. Kiểu dữ liệu và thao tác nhập/xuất

Dương Hoàng Huyên 13

Cú pháp Mô tả
math(x,y) Trả về số x với dấu của y
math(x) Trả về cosine của x (radians)
math(x) Trả về hyperbolic cosine của x (radians)
math(r) Đổi số thực r từ radians sang độ
math Hằng số e; xấp xĩ 2.
math(x) Trả về ex, i., math ** x
math(x) Trả về trị tuyệt đối x i. (float)
math(x) Trả về x!
math(x) Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng x; ví dụ: math(5) == 5
math(x, y) Trả về phần dư (số thực) của phép chia x/y
math(x)
Trả về hai giá trịReturns a 2-tuple with the mantissa (as a
float) and the exponent (as an int) so, x = m × 2e; see
math()
math(i) Trả về tổng các giá trị trong danh sách i (float)
math(x, y) 𝕥∀+𝕦∀
math(x) Trả về True nếu số thực x là ± ∞
math(x) Trả về True nếu số thực x là không phải số (“not a number”)
math(m, e) Trả về m × 2e; ngược với hàm math()
math(x, b) Trả về logbx; b tùy chọn (ngầm định là số e)
math(x) Trả về log10x
math(x) Trả về loge(1+ x)
math(x) Trả về phần thực và nguyên của số thực x
math Hằng số π; xấp xĩ 3.
math(x, y) Trả về xy (float)
math(d) Chuyển số thực d từ độ sang radians
math(x) Trả về sine của x (radians)
math(x) Trả về hyperbolic sine của x (radians)
math(x) Trả về √𝕥
math(x) Trả về tangent của x (radians)
math(x) Trả về hyperbolic tangent của x (radians)
math(x) Trả về phần nguyên của x
Để sử dụng các hàm này, yêu cầu phải: import math.

      1. Kiểu số phức (complex)

Kiểu dữ liệu số phức là kiểu bất biến chứa một cặp số thực, một phần biểu diễn
phần thực và phần còn lại là phần ảo của một số phức. Hằng số phức được viết với phần
thực và phần ảo được nối bằng dấu + hoặc  và với phần ảo theo sau là kí hiệu j. Dưới
đây là một số ví dụ: 3 + 2j, 0, 4 + 0j,  1 3. Lưu ý rằng nếu phần thực là

Ngôn ngữ lập trình Python

14 Trường Đại học Quy Nhơn – Khoa Công nghệ thông tin

0, chúng ta có thể bỏ qua. Mỗi đối tượng số phức luôn có hai thuộc tính là real và imag
để lưu phần thực và ảo.

Ngoại trừ phép toán //, %, divmod() và hàm ba đối số pow(), tất cả các phép toán
và hàm số trong số thực float đều có thể được sử dụng với các số phức và các phiên
bản gán tăng cường cũng vậy. Ngoài ra, số phức có một phương thức conjugate() đổi
dấu phần ảo.

Để sử dụng các hàm trong kiểu số phức, ta sử dụng: import cmath.

      1. Số thập phân (decimal)

Trong thực tế, số thực float có độ chính xác kém (số chữ số sau dấu thập phân ít,
khoảng 16 chữ số). Khi cần số thực có độ chính xác cao hơn, ta sử dụng module decimal
để tạo ra đối tượng Decimal.

Để tạo đối tượng Decimal, ta thực hiện các câu lệnh sau:

>>> import decimal
>>> a = decimal(9876)
>>> b = decimal(“54321”)
>>> a + b
Decimal(‘64197’)

Số thập phân được tạo bằng cách sử dụng hàm decimal(). Hàm này có
thể nhận một số nguyên hoặc một đối số chuỗi, nhưng không phải là một số float. Nếu
một chuỗi được sử dụng, nó có thể sử dụng ký hiệu thập phân đơn giản hoặc ký hiệu
hàm mũ. Ngoài việc cung cấp độ chính xác, sự biểu diễn chính xác của số thập phân.
Các số thập phân có thể được so sánh chính xác hơn.

Tất cả các toán tử và hàm số được liệt kê trong Bảng 2, bao gồm cả các phiên
bản gán tăng cường, có thể được sử dụng với đối tượng decimal, nhưng có
một số lưu ý. Nếu toán tử ** có toán hạng bên trái decimal thì toán hạng bên
phải của nó phải là số nguyên. Tương tự, nếu đối số đầu tiên của hàm pow() là
decimal, thì đối số thứ hai và thứ ba tùy chọn của nó phải là số nguyên.

2. 4. Kiểu chuỗi (str)

Các chuỗi được biểu diễn bằng kiểu dữ liệu str chứa một chuỗi các ký tự Unicode.
Kiểu dữ liệu str có thể được gọi như một hàm để tạo các đối tượng chuỗi, không có đối
số, nó trả về một chuỗi rỗng, với đối số không phải chuỗi (nonstring), nó trả về dạng
chuỗi của đối số và với đối số chuỗi, nó trả về một bản sao của chuỗi. Hàm str() cũng
có thể được sử dụng như một hàm chuyển đổi, trong trường hợp đó, đối số đầu tiên phải

Ngôn ngữ lập trình Python

16 Trường Đại học Quy Nhơn – Khoa Công nghệ thông tin

Chuỗi trong Python được đánh số từ 0 đến hết chuỗi. Nhưng cũng có thể sử dụng
chỉ số âm với kí tự chuối cùng (bên phải) có chỉ số là -1 đến kí tự đầu tiên. Ví dụ
s=”Light ray”.

Để cắt chuỗi ta có 3 cách sau:

seq[start]
seq[start:end]
seq[start:end:step]

Trong đó start vị trí bắt đầu, end vị trí kết thúc, step bước nhảy. Nếu bước nhảy
là số âm thì cắt chuỗi từ phải qua trái.

2.4. Phương thức và phép toán trên chuỗi

Trên chuỗi có các phép toán: in (kiểm tra xuất hiện), + (ghép chuỗi), += (ghép vào
cuối), * (sao chép) và *= (sao chép tăng cường).

Bảng 2. Các phương thức trên chuỗi.
Tên Ý nghĩa
s() Trả về bản sao của chuỗi s với kí tự đầu là chữ hoa.

s(width, char)

Trả về bản sao của s được căn giữa trong một chuỗi
có chiều dài chiều rộng được đệm bằng dấu cách
hoặc tùy chọn bằng char (chuỗi có độ dài 1)
s(t, start,
end)

Trả về số lần xuất hiện của chuỗi t trong chuỗi s
(hoặc trong phạm vi start:end của s)

s(encoding,
err)

Trả về một đối tượng byte biểu diễn cho chuỗi bằng
cách sử dụng mã hóa mặc định hoặc sử dụng mã
hóa được chỉ định và xử lý lỗi theo đối số err tùy
chọn
s(x, start,
end)

Trả về True nếu s (hoặc đoạn start:end của s) kết
thúc bằng str x, ngược lại trả về False.

s(size)

Trả về bản sao của s với các tab được thay thế bằng
dấu cách theo bội số của 8 hoặc kích thước nếu
được chỉ định

s(t, start, end)

Trả về vị trí tận cùng bên trái của t trong s (hoặc
trong phần start: end của s) hoặc -1 nếu không tìm
thấy. Sử dụng str() để tìm vị trí ngoài
cùng bên phải.

Chương 2. Kiểu dữ liệu và thao tác nhập/xuất

Dương Hoàng Huyên Mục lục

Tên Ý nghĩa
s(…) Trả về bản sao của s được định dạng theo các đối số đã cho.

s(t, start,
end)

Trả về vị trí tận cùng bên trái của t trong s (hoặc
trong phần bắt đầu: kết thúc của s) hoặc phát sinh
ValueError nếu không tìm thấy. Sử dụng
str() để tìm từ bên phải
s() Trả về True nếu s không rỗng và mọi ký tự trong s đều là chữ và số

s() Trả về True nếu s không rỗng và mọi ký tự trong s đều là chữ cái

s() Trả về True nếu s không rỗng và mọi ký tự trong s là chữ số hệ 10 (Unicode)

s() Trả về True nếu s không rỗng và mọi ký tự trong s là một chữ số (ASCII)

s() Trả về True nếu s không rỗng và là một định danh hợp lệ

s()

Trả về True nếu s có ít nhất một ký tự có thể viết
thường và tất cả các ký tự có thể viết thường của nó
đều là ký tự viết thường.
s() Trả về True nếu s không rỗng và mọi ký tự trong s là ký tự (Unicode) số như: chữ số hoặc phân số

s()

Trả về True nếu s rỗng hoặc nếu mọi ký tự trong s
được coi là có thể in được, bao gồm khoảng trắng,
nhưng không phải dòng mới.
s() Trả về True nếu s không rỗng và mọi ký tự trong s là khoảng trắng
s() Trả về True nếu s là một chuỗi tiêu đề không rỗng

s()

Trả về True nếu chuỗi s có ít nhất một ký tự có thể
viết hoa và tất cả các ký tự có thể viết hoa của nó
đều là chữ hoa;
s(seq) Trả về phần nối mọi mục trong tập hợp seq.

s(width, char)

Trả về bản sao của s được căn trái trong chuỗi có độ
dài width được đệm bằng dấu cách hoặc tùy chọn
bằng char (chuỗi có độ dài 1).
s() Trả về bản sao viết thường của s;
s() Companion of str(); see text for details
s(t) Trả về một bộ ba phần, phần của s trước t, phần chuỗi t, phần của s sau t.

s(t, u, n)

Trả về bản sao của s với mọi (hoặc tối đa n nếu cho
trước) lần xuất hiện của chuỗi t được thay thế bằng
chuỗi u

Chương 2. Kiểu dữ liệu và thao tác nhập/xuất

Dương Hoàng Huyên 19

Cú pháp: “…..%c…..%d….” % (values). Trong đó values là giá trị cần định
dạng, các kí tự định dạng kiểu dữ liệu sau dấu % như sau:

Kí tự Ý nghĩa
s Chuỗi kí tự
c Kí tự hoặc int

2.3. Số thập phân (decimal)

i Số nguyên
u Số nguyên không dấu
o Số nguyên không dấu hệ 8
x Số nguyên không dấu hệ 16
X Giống x nhưng kí tự hiển thị chữ hoa

2.3. Kiểu số thực dấu phẩy động (float)

E Giống e, nhưng kí tự hoa
f Số thực dấu phẩu động (decimal)
F Giống f, nhưng kí tự chữ hoa
% Hiện dấu %

2. Nhập xuất dữ liệu

2.5. Nhập dữ liệu từ bàn phím hàm input……………………………………………………………………….

Để nhập dữ liệu từ bàn phím, ta sử dụng hàm input với cú pháp như sau:

Name = input(“Dòng thông báo”)

Khi hàm thực hiện, nó hiện ra một dòng thông báo và chờ người dùng nhập vào
một chuỗi dữ liệu và trả về chuỗi dữ liệu đó. Đề nhận được kiểu dữ liệu mong muốn
trong lúc nhập, ta phải chuyển đổi kiểu dữ liệu bằng các hàm tương ứng ví dụ như: int,
float, complex, decimal, …

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

Ta có thể in dữ liệu ra màn hình bằng hàm print với cú pháp như sau:

print([object, …][, sep=’ ‘][, end=’\n’][, file=sys])

Trong đó object là đối tượng cần in, sep là kí tự ngăn cách giữa các đối tượng
(ngầm định là dấu cách), end là kí tự xuất hiện ở cuối dòng in (ngầm định là dấu xuống

Ngôn ngữ lập trình Python

20 Trường Đại học Quy Nhơn – Khoa Công nghệ thông tin

dòng), file chỉ ra đối tượng file để in giá trị đến (ngầm định là màn hình).

2. 6. Ví dụ

Ví dụ 2. Phương trình bậc hai là phương trình có dạng ax2 + bx + c = 0 trong

đó a ≠ 0. Nghiệm của các phương trình được tính từ công thức 𝕥 =𐀀∀

±√∀𐀀∀∀∀
∀∀. Trong

đó =b2-4ac nếu dương có 2 nghiệm thực, nếu bằng 0 có 1 nghiệm thực và nếu nhỏ

hơn không có 2 nghiệm phức. Viết chương trình nhập ba số thực a, b, c, tìm nghiệm của
phương trình.

import math
import cmath
a = float(input(‘Nhập hệ số a: ‘))
b = float(input(‘Nhập hệ số b: ‘))
c = float(input(‘Nhập hệ số c: ‘))
d = b*2 – 4ac
x1 = None
x2 = None
if d==0:
x1 = -(b/(2a))
else:
if d>0:
root = math(d)
else:
root = cmath(d)
x1 = (-b-root)/(2a)
x2 = (-b+root)/(2a)
equation = (“phương trình {0}x\N{SUPERSCRIPT TWO} + {1}x + {2} = 0
có nghiệm x = {3:.3}”).format(a, b, c, x1)
if x2 is not None:
equation += ” hoặc x={0:.2}”.format(x2)
print(equation)

2. 7. Bài tập

Bài 2. Một quả bóng được ném thẳng đứng trong không khí từ độ cao h 0 so với mặt
đất với vận tốc ban đầu v 0. Độ cao h và vận tốc v tiếp theo của nó được cho bởi các

phương trình sau: ℎ = ℎ𐀀+ 𝕣𐀀𝕡 −∀𝕔𝕡∀, v = v 0  gt, trong đó g=9/s2 là gia tốc trọng

trường. Viết đoạn chương trình tìm chiều cao và vận tốc v tại thời điểm t sau khi quả
bóng được ném.

Bài 2. Viết câu lệnh tính giá trị các biểu thức sau: 𝕎 =∀∀

.
√∀𐀀∀, 𝕏 =

𐀀(∀∀).
∀√∀ ,𝕐 =