2013-06-02 44 views
5

Tôi đang triển khai một công cụ dòng lệnh nhỏ trong python cần hỏi người dùng một vài câu hỏi. Tôi sử dụngthư viện python cho người dùng nhập

raw_input('Are you male or female?') 

mọi lúc. Bây giờ tôi muốn để có thể đối phó với người dùng câm (hoặc những người quá lười biếng để đọc/ghi tài liệu), vì vậy tôi cần phải kiểm tra xem câu trả lời có ý nghĩa hay không.

gender = '' 
while gender not in ['male', 'female']: 
    gender = raw_input('Are you male or female?') 

tôi tự hỏi liệu có tồn tại một cái gì đó giống như argparse đó sẽ tự động vấn đề này, một cái gì đó giống như

import inputparse 
gender = inputparse.get_input(prompt='Are you male or female?', type=str, possible_input=['male', 'female']) 

và sẽ chăm sóc kiểm tra tự động vv?

+0

Với những gì bạn đã thể hiện, thật dễ dàng để bạn viết. Câu hỏi của bạn là liệu có một thư viện chuẩn hoặc phổ biến để làm điều đó? –

+0

Bạn nói đúng, nó đơn giản để làm, nhưng giống như argparse chăm sóc nhiều hơn tôi sẽ thực hiện bản thân mình (tự động tạo ra --help etc), tôi đã có thể nghĩ rằng có cái gì đó tương đương với vấn đề này – Hans

Trả lời

1

Necromanting một lần nữa ...

hãy có một cái nhìn tại click nếu bạn cần một thư viện helper đơn giản cho câu hỏi này. Trọng tâm chính của nó là các tùy chọn dòng lệnh, nhưng nó phù hợp cho trường hợp sử dụng của bạn, tôi nghĩ vậy.

1

Tôi không biết nếu một thư viện như vậy tồn tại, nhưng bạn có thể viết một hàm bậc cao như thế này:

def check_input(predicate, msg, error_string="Illegal Input"): 
    while True: 
     result = input(msg).strip() 
     if predicate(result): 
      return result 
     print(error_string) 

result = check_input(lambda x: x in ['male', 'female'], 
            'Are you male or female? ') 
print(result) 

Output:

 
Are you male or female? foo 
Illegal Input 
Are you male or female? bar 
Illegal Input 
Are you male or female? Male 
Illegal Input 
Are you male or female? male 
male 
1

Tôi loạng choạng trong chủ đề này tìm kiếm một thư viện tương tự và tôi đã khá thất vọng vì thực tế là không có một, vì vậy tôi đã viết một. Tôi sẽ làm việc rất nhiều về điều này trong những ngày tiếp theo bởi vì tôi cần nhiều tính năng hơn cho những gì tôi đang viết.

pickone

2

Từ câu trả lời chấp nhận this question: thư viện cmd có thể quan tâm đến bạn.

"Lớp Cmd cung cấp một khuôn khổ đơn giản để viết các trình thông dịch lệnh theo dòng."

This Python Module of the Week page làm nổi bật và có một số ví dụ và giải thích.

Các vấn đề liên quan