User Input trong Python là một thành phần không thể thiếu để thu thập và xử lý dữ liệu trực tiếp từ người dùng. Bài viết này cung cấp cái nhìn tổng quan về User Input trong Python, đồng thời hướng dẫn bạn cách sử dụng các hàm để nhận dữ liệu nhập từ người dùng.
Các điểm chính
Khi đọc xong bài viết, bạn sẽ:
- Hiểu rõ User Input là gì: Bạn sẽ nắm được khái niệm cơ bản về User Input và tầm quan trọng của nó trong việc tương tác với chương trình Python. Không còn mơ hồ về cách chương trình nhận dữ liệu từ người dùng nữa!
- Nắm vững 2 hàm User Input phổ biến (
input()
vàraw_input()
): Bạn sẽ được làm quen chi tiết với cú pháp, cách sử dụng và sự khác biệt giữainput()
vàraw_input()
- Tự tay viết các đoạn code User Input đơn giản: Nhờ các ví dụ minh họa chi tiết, bạn sẽ có thể tự tin viết các chương trình nhỏ để nhận dữ liệu đầu vào từ người dùng và xử lý chúng.
- Biết cách chuyển đổi dữ liệu User Input sang dạng số (int, float): Bạn sẽ không còn lúng túng khi cần nhận dữ liệu số từ người dùng nữa, mà sẽ biết cách chuyển đổi để thực hiện các phép toán hoặc thao tác số học khác.
- Làm chủ cách sử dụng hàm
Print()
để hiển thị kết quả: Bạn sẽ biết cách kết hợpprint()
với User Input để tạo ra những chương trình tương tác thân thiện, hiển thị thông tin rõ ràng cho người dùng.
User Input trong Python là gì?
User Input trong Python là quá trình chương trình Python nhận dữ liệu đầu vào từ người dùng (thường thông qua bàn phím) khi chương trình đang chạy. Điều này cho phép người dùng tương tác trực tiếp với chương trình, cung cấp thông tin cần thiết để chương trình thực hiện các tác vụ cụ thể.

Mọi ứng dụng máy tính đều cần một cơ chế để nhận đầu vào (input) từ người dùng trong quá trình hoạt động. Cơ chế này tạo nên tính tương tác của ứng dụng. Tùy thuộc vào cách ứng dụng được xây dựng, đầu vào từ người dùng có thể là:
- Văn bản nhập vào từ console (thông qua sys.stdin – chúng ta sẽ tập trung vào phần này).
- Tương tác trên giao diện đồ họa (ví dụ: nhấn nút, nhập liệu vào ô văn bản).
- Dữ liệu gửi qua giao diện web (ví dụ: điền vào biểu mẫu trên trang web).
Các hàm nhận User Input trong Python
Python cung cấp cho chúng ta hai hàm tích hợp sẵn để đọc dữ liệu đầu vào từ bàn phím:
- Hàm
input()
- Hàm
raw_input()
Trình thông dịch Python hoạt động ở hai chế độ tương tác (interactive) và kịch bản (scripted). Chế độ tương tác rất tốt cho việc đánh giá nhanh, nhưng lại kém hiệu quả khi cần thực thi lặp lại cùng một tập lệnh. Đối với việc thực thi lặp lại, chế độ kịch bản nên được sử dụng.
Hãy bắt đầu bằng cách viết một tập lệnh Python đơn giản:
#! /usr/bin/python3.11
ten = "Kiran"
thanh_pho = "Hyderabad"
print("Xin chào, tên tôi là", ten)
print("Tôi đến từ", thanh_pho)
Hãy lưu đoạn code trên thành một file hello.py
và chạy file đó từ command-line (dòng lệnh). Đây là kết quả:
C:\python311> python hello.py
Xin chào, tên tôi là Kiran
Tôi đến từ Hyderabad
Chương trình này đơn giản chỉ in ra giá trị của hai biến đã được định nghĩa trong đó. Nếu bạn chạy lại chương trình nhiều lần, kết quả đầu ra vẫn sẽ hiển thị giống nhau mỗi lần. Nếu bạn muốn sử dụng chương trình cho một tên và thành phố khác, bạn có thể sửa đổi mã, thay đổi tên, chẳng hạn thành “Kiran
” và thành phố thành “Hyderabad
“. Mỗi lần bạn cần gán một giá trị khác, bạn sẽ phải sửa đổi chương trình, lưu lại và chạy, đây không phải là một cách làm lý tưởng.
Hàm input() trong Python
Rõ ràng, bạn cần một cơ chế nào đó để gán các giá trị khác nhau cho biến trong quá trình runtime – tức là khi chương trình đang chạy. Hàm input()
của Python thực hiện chính xác công việc này. Cú pháp của hàm input()
trong thư viện chuẩn của Python như sau:
>>> biến = input()
Khi trình thông dịch gặp hàm input()
, trình thông dịch sẽ tạm dừng và đợi dữ liệu người dùng nhập vào từ luồng đầu vào thường là bàn phím cho đến khi phím Enter được nhấn. Chuỗi ký tự mà người dùng đã nhập có thể được lưu trữ trong một biến kiểu chuỗi để sử dụng sau này.
Ví dụ về hàm input() trong Python
#! /usr/bin/python3.11
name = input()
city = input()
print("Xin chào, tên tôi là", name)
print("Tôi đến từ", city)
Khi bạn chạy, bạn sẽ thấy con trỏ nhấp nháy chờ User Input. Nhập giá trị cho name và city. Sử dụng dữ liệu đã nhập, chương trình sẽ hiển thị đầu ra.
Ravi
Chennai
Xin chào, tên tôi là Ravi
Tôi đến từ Chennai
Bây giờ, các biến không được gán bất kỳ giá trị cụ thể nào trong chương trình. Mỗi khi bạn chạy, các giá trị khác nhau có thể được nhập vào. Vì vậy, chương trình của bạn đã trở nên thực sự tương tác.
Thêm lời nhắc vào hàm input()
Bạn có thể cung cấp một đoạn văn bản làm lời nhắc (prompt) bên trong hàm input(). Lời nhắc này sẽ xuất hiện trước con trỏ khi bạn chạy code.
#! /usr/bin/python3.11
name = input("Nhập tên của bạn: ")
city = input("Nhập thành phố của bạn: ")
print("Xin chào, tên tôi là", name)
print("Tôi đến từ", city)
Khi chạy chương trình, các thông điệp nhắc sẽ hiển thị, về cơ bản giúp người dùng biết được nên nhập thông tin gì. Ví dụ với lời nhắc và User Input:
Nhập tên của bạn: An
Nhập thành phố của bạn: Hà Nội
Xin chào, tên tôi là An
Tôi đến từ Hà Nội
Giải thích code:
name = input("Nhập tên của bạn: ")
: Dòng này hiển thị lời nhắc “Nhập tên của bạn: ” và chờ User Input. Giá trị người dùng nhập vào sẽ được gán cho biếnname
.city = input("Nhập thành phố của bạn: ")
: Tương tự, dòng này hiển thị lời nhắc và lưu giá trị người dùng nhập vào biếncity
.- Các lệnh
print
sau đó: sử dụng các giá trị từname
vàcity
để tạo ra thông báo chào mừng.
Hàm raw_input() trong Python
Hàm raw_input()
hoạt động tương tự như hàm input()
. Điểm khác biệt duy nhất là hàm raw_input()
có trong Python 2.7, và nó đã được đổi tên thành input()
trong Python 3.6 trở lên. Cú pháp của hàm raw_input()
như sau:
>>> var = raw_input([prompt text])
Ví dụ về hàm raw_input()
Lưu ý: Vì chúng ta đang sử dụng Python 3, nên nếu bạn thực thi đoạn code này bạn phải thay raw_input()
thành input()
#! /usr/bin/python3.11
name = input("Nhập tên của bạn - ") # Đã sửa thành input()
city = input("Nhập tên thành phố - ") # Đã sửa thành input()
print ("Xin chào, tên tôi là", name)
print ("Tôi đến từ", city)
Bạn sẽ thấy dấu nhắc chờ user input. Hãy nhập giá trị cho tên và thành phố. Chương trình sẽ hiển thị kết quả dựa trên dữ liệu bạn đã nhập:
Nhập tên của bạn – An
Nhập tên thành phố – Hà Nội
Xin chào, tên tôi là An
Tôi đến từ Hà Nội
Giải thích chương trình:
- Các lệnh
input()
được thực hiện: Chương trình chờ User Input (người dùng nhập dữ liệu vào) sau khi hiện ra lời nhắc nhập (Ví dụ “Nhập tên của bạn”). - Dữ liệu từ người dùng sẽ được gán cho biến
name
(tên) và biếncity
(thành phố): - Các lệnh
print
sau đó sẽ sử dụng các biến này để hiển thị thông báo hoàn chỉnh:
Nhận giá trị số từ User Input trong Python
Hãy viết một mã Python chấp nhận chiều rộng và chiều cao của một hình chữ nhật từ người dùng và tính diện tích.
#! /usr/bin/python3.11
width = input("Enter width : ")
height = input("Enter height : ")
area = width*height
print ("Area of rectangle = ", area)
Chạy chương trình, và nhập chiều rộng và chiều cao.
Enter width: 20
Enter height: 30
Traceback (most recent call last):
File “C:\Python311\var1.py”, line 5, in <module>
area = width*height
TypeError: can’t multiply sequence by non-int of type ‘str’
Tại sao lại có lỗi TypeError
ở đây? Lý do là Python luôn đọc User Input như một chuỗi. Do đó, width = “20” và height = “30” là các chuỗi và rõ ràng bạn không thể thực hiện phép nhân hai chuỗi.
Để khắc phục vấn đề này, chúng ta sẽ sử dụng int()
, một hàm built-in khác từ thư viện chuẩn của Python. Hàm int()
chuyển đổi một đối tượng chuỗi thành một số nguyên. Để chấp nhận một User Input số nguyên, đọc đầu vào trong một chuỗi và ép kiểu về số nguyên với hàm int()
:
w = input("Enter width : ")
width = int(w)
h = input("Enter height : ")
height = int(h)
Bạn có thể kết hợp câu lệnh input và ép kiểu trong một dòng:
#! /usr/bin/python3.11
width = int(input("Enter width : "))
height = int(input("Enter height : "))
area = width*height
print ("Area of rectangle = ", area)
Bạn có thể nhập bất kỳ giá trị nguyên nào vào hai biến trong chương trình:
Enter width: 20
Enter height: 30
Area of rectangle = 600
Hàm float()
của Python chuyển đổi một chuỗi thành một đối tượng số thực (float). Chương trình sau đây chấp nhận User Input và phân tích cú pháp thành biến rate (kiểu float) và tính tiền lãi của một số tiền cũng là do User Input.
#! /usr/bin/python3.11
amount = float(input("Enter Amount : "))
rate = float(input("Enter rate of interest : "))
interest = amount*rate/100
print ("Amount: ", amount, "Interest: ", interest)
Chương trình yêu cầu User Input, nhập vào số tiền và lãi suất, kết quả được hiển thị:
Enter Amount: 12500
Enter rate of interest: 6.5
Amount: 12500.0 Interest: 812.5
Hàm Print() trong Python
Hàm print()
của Python là một hàm built-in (tích hợp sẵn). Đây là hàm được sử dụng thường xuyên nhất, có chức năng hiển thị giá trị của biểu thức Python được đặt trong dấu ngoặc đơn lên console (màn hình) của Python, hoặc đầu ra tiêu chuẩn (standard output – sys.stdout).
print ("Hello World ")
Bên trong dấu ngoặc đơn có thể chứa bất kỳ số lượng biểu thức Python nào. Các biểu thức này phải được phân tách bằng dấu phẩy. Mỗi phần tử trong danh sách có thể là bất kỳ đối tượng Python nào, hoặc một biểu thức Python hợp lệ.
#! /usr/bin/python3.11
a = "Hello World"
b = 100
c = 25.50
d = 5+6j
print ("Message:", a)
print (b, c, b-c)
print(pow(100, 0.5), pow(c,2))
Kết quả đầu ra khi thực thi code là:
Message: Hello World
100 25.5 74.5
10.0 650.25
Trong ví dụ này:
print ("Message:", a)
: hiển thị một chuỗi ký tự"Message:"
và giá trị của biếna
.print (b, c, b-c)
: in ra giá trị của hai biếnb
,c
và kết quả của phép trừb-c
.print(pow(100, 0.5), pow(c,2))
: sử dụng hàmpow()
để tính căn bậc hai của 100 và bình phương của biếnc
, rồi in kết quả ra.
Nếu có nhiều đối tượng được phân tách bằng dấu phẩy trong dấu ngoặc đơn của hàm print()
, các giá trị sẽ được phân tách bằng một khoảng trắng " "
theo mặc định. Để sử dụng bất kỳ ký tự nào khác làm dấu phân cách, hãy định nghĩa tham số sep cho hàm print()
. Tham số sep này phải nằm sau danh sách các biểu thức cần in.
Trong kết quả đầu ra sau của hàm print()
, các biến được phân tách bằng dấu phẩy.
#! /usr/bin/python3.12
city="Hyderabad"
state="Telangana"
country="India"
print(city, state, country, sep=',')
Kết quả, với tác động của sep=',',
sẽ như sau:
Hyderabad,Telangana,India
Giải thích Tham số sep:
sep
là viết tắt của “separator” (dấu phân cách).- Tham số
sep
: quy định ký tự (hoặc chuỗi ký tự) được sử dụng để phân tách giữa các giá trị khi in ra. - Nếu không chỉ định
sep
, giá trị mặc định là một khoảng trắng" "
.
Mặc định, hàm print()
sẽ thêm một ký tự xuống dòng ('\n')
vào cuối. Do đó, kết quả đầu ra của câu lệnh print()
tiếp theo sẽ xuất hiện ở dòng tiếp theo trên console.
city="Hyderabad"
state="Telangana"
print("City:", city)
print("State:", state)
Kết quả sẽ là:
City: Hyderabad
State: Telangana
Để làm cho hai dòng này xuất hiện trên cùng một dòng, hãy sử dụng tham số end trong hàm print()
đầu tiên và đặt end
thành một chuỗi khoảng trắng " "
.
city="Hyderabad"
state="Telangana"
country="India"
print("City:", city, end=" ")
print("State:", state)
Kết quả đầu ra của cả hai hàm print()
sẽ xuất hiện liên tiếp:
Giải thích Tham số end:
end
: là tham số cho bạn chỉ định ký tự hoặc chuỗi ký tự thêm vào cuối của kết quả.- Mặc định thì Python sẽ tự thêm ký tự xuống dòng (
\n
) vào sau cùng, do đó, nếu không khai báoend
các lầnprint()
liên tục sẽ xuống dòng. - Thay
end = " "
để Python tự thêm khoảng trắng thay vì xuống dòng.
Lời kết
Vậy là chúng ta đã cùng nhau tìm hiểu về User Input trong Python, từ khái niệm cơ bản, các hàm thường dùng như input()
, raw_input()
, đến cách nhận giá trị số và sử dụng hàm print()
. Hy vọng những kiến thức này sẽ giúp bạn nắm vững cách tương tác với người dùng trong các chương trình Python của mình.
Mọi người cũng đọc