Cách cung cấp cho người dùng lựa chọn trong python

Trong hầu hết các trường hợp, đầu vào này bắt nguồn từ bàn phím, các dạng khác như nhấp chuột, track-pad, cảm biến, v.v. cũng có thể

Như mọi khi, Python cung cấp một khung đơn giản để nhận đầu vào của người dùng dưới dạng hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2

Hàm đầu vào đọc một dòng từ bàn điều khiển, chuyển đổi nó thành một chuỗi và trả về nó

Trong hướng dẫn này, chúng tôi sẽ trình bày chi tiết về hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2 bằng nhiều trường hợp sử dụng khác nhau. Chúng ta sẽ thảo luận về một số dạng đầu vào có thể tồn tại và cách phân tích cú pháp đầu vào này thành định dạng được yêu cầu với sự trợ giúp của các đoạn mã

Nguồn. Giphy

cú pháp

đầu vào [[dấu nhắc]]

Nơi đây,
lời nhắc. một đối số chuỗi tùy chọn, được sử dụng để hiển thị thông báo cho người dùng. Ví dụ. 'Nhập tên. ’

Khi hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2 được gọi, luồng chương trình sẽ tạm dừng cho đến khi người dùng nhập một số đầu vào. Sau đó, người dùng thêm một số thông tin và nhấn phím
Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
5. Hàm nhập trả về chương trình với chuỗi đã nhập

entered_value = input['Enter some value: ']
print[entered_value]

đầu ra

Nguồn. Tác giả

Kiểu đầu vào

Hàm đầu vào chuyển đổi tất cả thông tin mà nó nhận được sang định dạng chuỗi. Hãy để chúng tôi có một cái nhìn

đầu ra

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:

Chúng ta đã sử dụng hàm type để kiểm tra kiểu dữ liệu của đối tượng. Như bạn có thể thấy ở trên, việc chúng ta nhập số hay chuỗi ký tự không quan trọng. Cả hai đều trả về dưới dạng đối tượng chuỗi

Chấp nhận đầu vào số nguyên từ người dùng

Vì hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2 trả về mọi thứ dưới dạng chuỗi, nên chúng ta cần thực hiện một số chuyển đổi kiểu rõ ràng để chấp nhận số nguyên. Ở đây, chúng ta sẽ sử dụng hàm
Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
7

đầu ra

________số 8_______

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
8 chuyển đổi chuỗi đã cho thành kiểu số nguyên

Chấp nhận đầu vào float từ người dùng

Tương tự, chúng ta có thể lấy giá trị float bằng cách sử dụng hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
9

đầu ra

Enter value: 5.6
Type of float_1:
Twice the given numbers is : 11.2

Xử lý ngoại lệ đầu vào của người dùng

Một vấn đề phổ biến với chuyển đổi kiểu là ngoại lệ

Khi người dùng nhập đầu vào không thể chuyển đổi thành loại đã cho, chúng tôi sẽ nhận được một ngoại lệ ValueError

Ví dụ: người dùng nhập một chuỗi ngẫu nhiên cho tuổi

num = int[input['Enter age: ']]

Ở đây, hàm

Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
0 mong đợi một giá trị số nguyên được bao bọc bên trong một chuỗi. Bất kỳ loại giá trị nào khác sẽ dẫn đến lỗi. Hãy xem điều gì sẽ xảy ra khi chúng ta nhập
Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
1 làm đầu vào

đầu ra

Enter age: nope---------------------------------------------------------
ValueError Traceback [most recent call last]
in
----> 1 num_1 = int[input['Enter age: ']]

ValueError: invalid literal for int[] with base 10: 'nope'

Để đảm bảo rằng người dùng nhập thông tin hợp lệ, chúng tôi cần xử lý nhiều lỗi như vậy thường xảy ra với đầu vào của người dùng. Chúng tôi sẽ sử dụng Xử lý ngoại lệ Python cho mục đích này. Hãy xem

Một lần nữa nếu chúng ta nhập

Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
1 làm đầu vào

Enter a number: nope
This is not a number.

Trong đoạn mã trên, nếu người dùng nhập đầu vào không phải số nguyên, mã sẽ đưa ra một ngoại lệ. Ngoại lệ này bị bắt bởi câu lệnh except nơi chúng tôi in.

Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
3

Do khối thử ngoại trừ này, chương trình của chúng tôi sẽ không gặp sự cố khi người dùng nhập sai

Nguồn. Giphy

Chúng ta có thể sử dụng khối ngoại lệ cùng với một vòng lặp. Do đó, người dùng sẽ được nhắc đi nhắc lại cho đến khi họ cung cấp thông tin đầu vào hợp lệ

Nguồn. Tác giả

Nhiều giá trị đầu vào trong một dòng

Chúng ta cũng có thể yêu cầu nhiều giá trị trực tiếp trên một dòng chỉ với một lần gọi hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2. Ví dụ: hãy lấy một số thông tin về sinh viên từ người dùng và lưu trữ thông tin đó trong các biến khác nhau

đầu ra

Enter student's name, age and score separated by space:Chaitanya 20 100
Student Name: Chaitanya
Student Age: 20
Student Score: 100

Ở đây, chúng tôi đã tách chuỗi đầu vào bằng khoảng trắng bằng cách sử dụng phương thức

Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
5

Lấy danh sách các số làm đầu vào

Nhưng điều gì sẽ xảy ra khi bạn không biết về số lượng giá trị đầu vào?

Giả sử bạn cần nhập một danh sách các số và trả về tổng của chúng. Bạn không biết số phần tử trong danh sách đó. Làm thế nào để chúng tôi nhập danh sách này?

Chúng tôi sử dụng cả chức năng tách và bản đồ. Phương thức

Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
6 sẽ chia chuỗi đã nhập thành một danh sách các chuỗi. Sau đó, hàm
Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
7 sẽ thực hiện thao tác
Enter first num: 10
Enter second num: 5
Type of num_1:
Type of num_2:
The sum of given numbers is : 15
8 trên tất cả các phần tử danh sách

đầu ra

Enter a list of numbers separated by space: 10 20 30 40 50 60
Intermediate_list: ['10', '20', '30', '40', '50', '60']
Number List: [10, 20, 30, 40, 50, 60]
List sum: 210

Trong đoạn mã trên

  • Enter name: Chaitanya Baweja
    Enter age: 20
    data_type of name:
    data_type of age:
    2 trả về một chuỗi chứa các số được phân tách bằng dấu cách
  • Enter first num: 10
    Enter second num: 5
    Type of num_1:
    Type of num_2:
    The sum of given numbers is : 15
    6 trả về danh sách các chuỗi được phân vùng trên khoảng trắng
  • Enter first num: 10
    Enter second num: 5
    Type of num_1:
    Type of num_2:
    The sum of given numbers is : 15
    7 thực hiện thao tác
    Enter first num: 10
    Enter second num: 5
    Type of num_1:
    Type of num_2:
    The sum of given numbers is : 15
    0 trên tất cả các phần tử danh sách và trả về một đối tượng bản đồ
  • Hàm
    Enter value: 5.6
    Type of float_1:
    Twice the given numbers is : 11.2
    3 chuyển đổi đối tượng bản đồ thành danh sách

Nguồn. Giphy

Đầu vào nhiều dòng từ người dùng

Hàm

Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2 trả về bất cứ khi nào nó gặp một ký tự xuống dòng [khi người dùng nhấn phím
Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
5]. Do đó, nếu bạn cố gắng gửi thông tin nhiều dòng, thì
Enter name: Chaitanya Baweja
Enter age: 20
data_type of name:
data_type of age:
2 sẽ chỉ trả về dòng đầu tiên

Để khắc phục điều này, chúng ta có thể sử dụng vòng lặp for. Chúng tôi nhận được một dòng đầu vào cho mỗi lần lặp lại và dừng lại khi chúng tôi nhận được một dòng trống ['Nhấn Enter trên một dòng trống']. Chúng tôi kết hợp tất cả các dòng này trong một danh sách

đầu ra

Phần kết luận

Python cung cấp một khung đơn giản để nhận đầu vào của người dùng. Hàm đầu vào đọc một dòng từ bàn điều khiển, chuyển đổi nó thành một chuỗi và trả về nó

Hàm đầu vào chuyển đổi tất cả thông tin mà nó nhận được sang định dạng chuỗi. Chúng tôi sử dụng chuyển đổi kiểu để chuyển đổi đầu vào thành định dạng được yêu cầu

Các trường hợp ngoại lệ xảy ra do đầu vào không hợp lệ có thể được quản lý bằng cách sử dụng khối thử-ngoại trừ. Chức năng split và map giúp nhập nhiều giá trị trên cùng một dòng

Chaitanya Baweja mong muốn giải quyết các vấn đề trong thế giới thực bằng các giải pháp kỹ thuật. Theo dõi hành trình của anh ấy trên Twitter và Linkedin

Chủ Đề