1. Mục tiêu
- Làm quen với ngôn ngữ lập trình Python và Môi trường phát triển tích hợp (IDE) Thonny.
- Hiểu và thực hành được cách viết, lưu trữ và thực thi một chương trình Python cơ bản.
- Nắm vững cú pháp và cách sử dụng của hai hàm nhập/xuất dữ liệu cơ bản: input() và print().
2. Giới thiệu và Phạm vi ứng dụng
Python là một ngôn ngữ lập trình bậc cao, được ưa chuộng trong lập trình thi đấu nhờ vào cú pháp sáng sủa, ngắn gọn và hệ thống thư viện mạnh mẽ. Để bắt đầu, việc thiết lập một môi trường làm việc hiệu quả là điều kiện tiên quyết.
Thonny là một Môi trường phát triển tích hợp (IDE) được thiết kế đặc biệt cho người mới bắt đầu học Python. Thonny tích hợp sẵn trình thông dịch Python và có các công cụ gỡ lỗi trực quan, giúp người học dễ dàng quan sát quá trình thực thi của chương trình.
Trong khuôn khổ các bài tập và đề thi HSG Tin học, mọi bài toán đều yêu cầu chương trình phải đọc dữ liệu đầu vào (Input) và đưa ra kết quả đầu ra (Output) theo một định dạng cụ thể. Do đó, việc sử dụng thành thạo các hàm nhập/xuất là kỹ năng nền tảng và thiết yếu nhất.
3. Cú pháp và Các ví dụ minh họa
3.1. Cấu trúc cú pháp chuẩn: Hàm print()
Hàm print() được sử dụng để hiển thị dữ liệu ra màn hình (console).
- Cú pháp:
print(object1, object2, ..., sep=' ', end='\n') - Tham số:
- object: Các giá trị, biến hoặc biểu thức cần in ra. Có thể có nhiều đối tượng, cách nhau bởi dấu phẩy.
- sep (separator): Ký tự dùng để ngăn cách giữa các đối tượng. Giá trị mặc định là một khoảng trắng (‘ ‘).
- end: Ký tự được in ra sau cùng, sau khi tất cả các đối tượng đã được in. Giá trị mặc định là ký tự xuống dòng mới (‘\n’).
3.2. Ví dụ 1: Chương trình “Hello, World!”
Đây là chương trình cơ bản nhất, dùng để kiểm tra môi trường làm việc đã được cài đặt thành công hay chưa.
# In ra dòng chữ "Hello, World!"
print("Hello, World!")Phân tích: Lệnh trên gọi hàm print() với một đối tượng duy nhất là chuỗi ký tự “Hello, World!”. Chương trình sẽ hiển thị chuỗi này trên màn hình và tự động xuống dòng.

3.3. Cấu trúc cú pháp chuẩn: Hàm input()
Hàm input() được sử dụng để đọc một dòng dữ liệu từ người dùng.
- Cú pháp:
ten_bien = input(prompt) - Hoạt động:
- Chương trình sẽ dừng lại và đợi người dùng nhập dữ liệu từ bàn phím.
- Sau khi người dùng nhập xong và nhấn Enter, toàn bộ dữ liệu được nhập vào sẽ được trả về dưới dạng một chuỗi ký tự (string).
- prompt: Là một chuỗi ký tự tùy chọn, sẽ được hiển thị ra màn hình để hướng dẫn người dùng cần nhập gì.
3.4. Ví dụ 2: Nhập và xuất dữ liệu cá nhân
Chương trình sau yêu cầu người dùng nhập tên và sau đó in ra một lời chào.
# Yêu cầu người dùng nhập tên và lưu vào biến 'ho_ten'
ho_ten = input("Vui lòng nhập tên của bạn: ")
# In ra lời chào bằng cách sử dụng biến 'ho_ten'
print("Xin chào,", ho_ten)Phân tích:
- Dòng 1: Hàm input() hiển thị câu “Vui lòng nhập tên của bạn: ” và đợi người dùng nhập liệu. Giá trị nhập vào được gán cho biến ho_ten.
- Dòng 4: Hàm print() in ra hai đối tượng: chuỗi “Xin chào,” và giá trị của biến ho_ten. Theo mặc định, chúng được ngăn cách bởi một khoảng trắng.
4. Trực quan hóa và Gỡ lỗi với Thonny
Thonny cho phép theo dõi sự thay đổi giá trị của các biến và quá trình thực thi từng dòng lệnh. Sử dụng chức năng Debug của Thonny (chọn Run > Debug current script hoặc nhấn Ctrl+F5) và thực thi từng bước ( Step over – F6 hoặc Step into – F7).
Khi thực thi Ví dụ 2 trong chế độ gỡ lỗi:
- Chương trình sẽ dừng lại ở dòng ho_ten = input(…).
- Sau khi người dùng nhập tên (ví dụ: “Anh”) và nhấn Enter, cửa sổ “Variables” sẽ hiển thị biến ho_ten cùng với giá trị chuỗi “Anh”.
- Bước tiếp theo sẽ thực thi hàm print(), và kết quả được hiển thị trong Shell.

5. Bài tập vận dụng
5.1. Bài tập 1
5.1.1. Đề bài
Viết chương trình yêu cầu người dùng nhập vào tên và năm sinh, sau đó in ra một câu giới thiệu có dạng: "Chào bạn [Tên], bạn sinh năm [Năm sinh]."
5.1.2. Lời giải và Phân tích
# Đọc tên từ người dùng
ten = input("Nhập tên của bạn: ")
# Đọc năm sinh từ người dùng
nam_sinh = input("Nhập năm sinh của bạn: ")
# In ra câu giới thiệu theo mẫu
print("Chào bạn", ten, ", bạn sinh năm", nam_sinh, ".")Phân tích:
- Chương trình sử dụng hai lệnh input() riêng biệt để đọc tên và năm sinh. Cả hai giá trị này đều được lưu dưới dạng chuỗi.
- Hàm print() cuối cùng được gọi với nhiều đối tượng (“Chào bạn”, biến ten, “, bạn sinh năm”, biến nam_sinh, “.”) để tạo thành câu hoàn chỉnh.
5.2. Bài tập 2
5.2.1. Đề bài
Viết chương trình yêu cầu người dùng nhập vào hai số nguyên a và b. Sau đó, hoán đổi giá trị của hai biến này và in ra màn hình giá trị mới của chúng.
5.2.2. Lời giải và Phân tích
# Đọc giá trị a và b từ người dùng
a = input("Nhập số a: ")
b = input("Nhập số b: ")
# In giá trị ban đầu
print("Trước khi hoán đổi: a =", a, ", b =", b)
# Thực hiện hoán đổi giá trị bằng biến tạm
tam = a
a = b
b = tam
# In giá trị sau khi hoán đổi
print("Sau khi hoán đổi: a =", a, ", b =", b)Phân tích: Đây là phương pháp hoán đổi kinh điển sử dụng một biến tạm (tam).
- Giá trị của a được sao chép và lưu vào tam.
- Giá trị của b được gán cho a.
- Giá trị đã lưu trong tam (giá trị ban đầu của a) được gán cho b.
Lưu ý rằng tại thời điểm này, chúng ta đang hoán đổi hai chuỗi ký tự, không phải hai con số. Các bài học sau sẽ đề cập đến việc chuyển đổi kiểu dữ liệu.
6. Các lưu ý và Lỗi thường gặp
- Kiểu dữ liệu trả về của input(): Hàm input() luôn trả về một chuỗi (str), ngay cả khi người dùng nhập vào một con số. Việc thực hiện các phép toán số học trực tiếp trên kết quả của input() sẽ gây ra lỗi.
Ví dụ: input(“Nhập số: “) + 1 sẽ báo lỗi TypeError. - Lỗi SyntaxError với print: Trong Python 3, print là một hàm và phải được sử dụng với cặp dấu ngoặc đơn (). Viết print “Hello” (cú pháp của Python 2) sẽ gây ra lỗi cú pháp.
- Quên đối số cho input() và print(): Cả hai hàm đều yêu cầu cặp dấu ngoặc đơn, kể cả khi không có tham số nào được truyền vào.
7. Tổng kết
Bài học này đã cung cấp những kiến thức và kỹ năng khởi đầu quan trọng nhất trong lập trình với Python:
- Sử dụng IDE Thonny để soạn thảo, lưu và chạy chương trình.
- Hiểu và vận dụng hàm print() để xuất thông tin ra màn hình.
- Hiểu và vận dụng hàm input() để nhận dữ liệu từ người dùng.
- Nhận biết rằng mọi dữ liệu đọc từ input() đều ở dạng chuỗi.
Việc nắm vững các thao tác nhập/xuất cơ bản này là nền tảng không thể thiếu để giải quyết bất kỳ bài toán lập trình nào.



