Trong chương này, chúng ta sẽ học cách Python chấp nhận đầu vào từ người dùng qua bảng điều khiển và hiển thị đầu ra trên cùng một bảng điều khiển.
Mỗi ứng dụng máy tính nên có một quy định để chấp nhận đầu vào từ người dùng khi nó đang chạy. Điều này làm cho ứng dụng trở nên tương tác. Tùy thuộc vào cách nó được phát triển, một ứng dụng có thể chấp nhận đầu vào từ người dùng dưới dạng văn bản được nhập vào trong bảng điều khiển (sys.stdin) , một bố cục đồ họa, hoặc một giao diện web.
Python cung cấp cho chúng ta hai hàm tích hợp sẵn để đọc đầu vào từ bàn phím.
Trình thông dịch Python hoạt động trong chế độ tương tác và chế độ kịch bản. Trong khi chế độ tương tác tốt cho các đánh giá nhanh, nó kém hiệu quả hơn. Đối với việc thực thi lặp đi lặp lại cùng một tập hợp các hướng dẫn, chế độ kịch bản nên được sử dụng.
Hãy viết một đoạn mã Python đơn giản để bắt đầu.
#! /usr/bin/python3.11 name = "Kiran" city = "Hyderabad" print ("Hello My name is", name) print ("I am from", city)
Lưu đoạn mã trên dưới dạng hello.py và chạy nó từ dòng lệnh. Đây là đầu ra:
C:\python311> python hello.py Hello My name is Kiran I am from Hyderabad
Chương trình đơn giản chỉ in ra giá trị của hai biến trong đó. Nếu bạn chạy chương trình nhiều lần, cùng một đầu ra sẽ được hiển thị mỗi lần. Để sử dụng chương trình cho một tên và thành phố khác, bạn có thể chỉnh sửa mã, thay đổi tên thành "Ravi" và thành phố thành "Chennai". Mỗi lần bạn cần gán giá trị khác, bạn sẽ phải chỉnh sửa chương trình, lưu lại và chạy, điều này không phải là cách lý tưởng.
Rõ ràng, bạn cần một cơ chế nào đó để gán giá trị khác nhau cho biến trong thời gian chạy - khi chương trình đang chạy. Hàm input() của Python thực hiện công việc tương tự.
Dưới đây là cú pháp của hàm input() trong thư viện chuẩn của Python.
>>> var = input()
Khi trình thông dịch gặp hàm input(), nó sẽ chờ người dùng nhập dữ liệu từ luồng đầu vào chuẩn (bàn phím) cho đến khi phím Enter được nhấn. Chuỗi ký tự có thể được lưu trữ trong một biến kiểu chuỗi để sử dụng sau này.
Khi đọc phím Enter, chương trình sẽ chuyển sang câu lệnh tiếp theo. Hãy thay đổi chương trình của chúng ta để lưu trữ đầu vào của người dùng vào các biến name và city.
#! /usr/bin/python3.11 name = input() city = input() print ("Hello My name is", name) print ("I am from ", city)
Khi bạn chạy, bạn sẽ thấy con trỏ đang chờ nhập dữ liệu từ người dùng. Nhập giá trị cho tên và thành phố. Sử dụng dữ liệu đã nhập, kết quả sẽ được hiển thị.
Ravi Chennai Hello My name is Ravi I am from Chennai
Bây giờ, các biến không được gán 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ở thành một chương trình thực sự tương tác.
Bên trong hàm input(), bạn có thể cung cấp một văn bản prompt , sẽ xuất hiện trước con trỏ khi bạn chạy mã.
#! /usr/bin/python3.11 name = input("Enter your name : ") city = input("Enter your city : ") print ("Hello My name is", name) print ("I am from ", city)
Khi bạn chạy chương trình, nó hiển thị thông điệp nhắc nhở, cơ bản giúp người dùng biết nên nhập gì.
Enter your name: Praveen Rao Enter your city: Bengaluru Hello My name is Praveen Rao I am from Bengaluru
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 này có sẵn trong Python 2.7 và đã được đổi tên thành input() trong Python 3.6.
Cú pháp của hàm raw_input() như sau:
>>> var = raw_input ([prompt text])
Hãy viết lại chương trình trên bằng cách sử dụng hàm raw_input():
#! /usr/bin/python3.11 name = raw_input("Eneter your name - ") city = raw_input("Enter city name - ") print ("Hello My name is", name) print ("I am from ", city)
Khi bạn chạy, bạn sẽ thấy con trỏ đang chờ nhập dữ liệu từ người dùng. Nhập giá trị cho tên và thành phố. Sử dụng dữ liệu đã nhập, kết quả sẽ được hiển thị.
Eneter your name - Ravi Enter city name - Chennai Hello My name is Ravi I am from Chennai
Hãy viết một đoạn 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 bạn nhận được TypeError ở đây? Lý do là, Python luôn đọc đầu vào của người dùng dưới dạng 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 của hai chuỗi.
Để khắc phục vấn đề này, chúng ta sẽ sử dụng int() , một hàm tích hợp khác từ thư viện chuẩn của Python. Nó chuyển đổi một đối tượng chuỗi thành một số nguyên.
Để chấp nhận một đầu vào số nguyên từ người dùng, hãy đọc đầu vào dưới dạng chuỗi và chuyển đổi nó thành số nguyên bằng cách sử dụng 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ác câu lệnh nhập và ép kiểu trong một câu.
#! /usr/bin/python3.11 width = int(input("Enter width : ")) height = int(input("Enter height : ")) area = width*height print ("Area of rectangle = ", area)
Bây giờ bạn có thể nhập bất kỳ giá trị nguyên nào cho 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 float. Chương trình sau chấp nhận đầu vào từ người dùng và phân tích nó thành một biến float - rate, và tính toán lãi suất trên một số tiền cũng được người dùng nhập vào.
#! /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 người dùng nhập số tiền và tỷ lệ; và hiển thị kết quả như sau −
Enter Amount: 12500 Enter rate of interest: 6.5 Amount: 12500.0 Interest: 812.5
Hàm print() của Python là một hàm tích hợp sẵn. Đây là hàm được sử dụng thường xuyên nhất, hiển thị giá trị của biểu thức Python được đưa vào trong dấu ngoặc đơn, trên bảng điều khiển của Python, hoặc đầu ra chuẩn (sys.stdout) .
print ("Hello World ")
Bất kỳ số lượng biểu thức Python nào có thể có bên trong dấu ngoặc đơn. Chúng phải được phân tách bằng dấu phẩy. Mỗi mục 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))
Lần gọi đầu tiên của print() hiển thị một chuỗi văn bản và một biến chuỗi. Lần gọi thứ hai in giá trị của hai biến và phép trừ của chúng. Hàm pow() tính căn bậc hai của một số và giá trị bình phương của một biến.
Message Hello World 100 25.5 74.5 10.0 650.25
Nếu có nhiều đối tượng được phân tách bằng dấu phẩy trong dấu ngoặc của hàm print(), các giá trị sẽ được phân tách bằng một khoảng trắng " ". Để sử dụng bất kỳ ký tự nào khác làm ký tự phân tách, hãy định nghĩa một tham số sep cho hàm print(). Tham số này nên đứng sau danh sách các biểu thức sẽ được in ra.
Trong đầ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.11 city="Hyderabad" state="Telangana" country="India" print(city, state, country, sep=',')
Ảnh hưởng của sep=',' có thể thấy trong kết quả −
Hyderabad,Telangana,India
Hàm print() phát ra một ký tự xuống dòng ('\n') ở cuối, theo mặc định. Do đó, đầu ra của câu lệnh print() tiếp theo sẽ xuất hiện ở dòng tiếp theo của bảng điều khiển.
city="Hyderabad" state="Telangana" print("City:", city) print("State:", state)
Hai dòng được hiển thị như là đầu ra −
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 định nghĩa tham số end trong hàm print() đầu tiên và đặt nó 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ả của cả hai hàm print() xuất hiện liên tiếp.
City: Hyderabad State: Telangana