2011-11-14 25 views
6

Để phân công bài tập về nhà, tôi được yêu cầu nêu ra lỗi chính nếu khóa (văn bản) mà người dùng nhập vào chứa bất kỳ ký tự không phải chữ cái nào và lặp lại. Cho đến nay tôi có điều này mà dường như để làm việc nhưng rõ ràng không sử dụng thử dự kiến ​​/ trừ cấu trúcKeyErrors và cách nâng KeyError

key=input("Please enter the key word you want to use: ") 
ok=key.isalpha() 
while (ok==False): 
    print("The key you entered is invalid. Please try again") 
    key=input("Please enter the key word you want to use") 
+2

Đây là một câu hỏi xấu cho SO: (1) nó bài tập về nhà, (2) mã gốc của OP không phải là cú pháp hợp lệ, (3) không có câu hỏi rõ ràng ở đây, (4) câu trả lời duy nhất chỉ là một giải pháp bài tập về nhà mà không giải thích bất cứ điều gì. –

Trả lời

11

Đây là không sử dụng thích hợp của KeyError (nó là nghĩa vụ phải được sử dụng để tra cứu dict, hoặc các tình huống tương tự), nhưng nếu nó là những gì bạn đã được yêu cầu để làm sau đó thử một cái gì đó như thế này:

def prompt_thing(): 
    s = raw_input("Please enter the key word you want to use: ") 
    if s == '' or not s.isalnum(): 
     print("The key you entered is invalid. Please try again") 
     raise KeyError('non-alphanumeric character in input') 
    return s 

s = None 
while s is None: 
    try: 
     s = prompt_thing() 
    except KeyError: 
     pass 
+3

1 cho đó không phải là những gì KeyError có nghĩa là, không sử dụng nó theo cách này – Yonatan

+1

OP chỉ đưa ra một đoạn mã mà chúng ta không biết bối cảnh ... charitably giả định dòng tiếp theo để tạo ra một dict ... – MarkHu

+1

Thật không may , đọc nhanh "không thích hợp" có thể được (phân tích sai) được phân tích là "thích hợp" - tôi biết vì tôi rất choáng váng khi tôi đọc lại câu trả lời (và thấy tôi đã sai chính tả!) – sage

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