Tôi phải sử dụng hàm isIn(secretWord,lettersGuessed) để tìm mật khẩu từ danh sách. Đăng mã của tôi dưới đây.
def isWordGuessed(secretWord, LettersGuessed):
nếu secretWord=="" hoặc LetterGuessed==[]:
trả về Sai
if secretWord[0:] trong các chữ cáiĐoán:
trả về Đúng
khác:
trả về isWordGuessed(secretWord[1:],lettersGuessed)
Đối với một số ví dụ tôi đã nhận được câu trả lời sai. Một số trong số đó là:
isWordGuessed('apple', ['a', 'e', 'i', 'k', 'p', 'r', 's'])
Trong ví dụ trên tôi nhận được ĐÚNG VẬY
Là đầu ra nó phải là SAI
Bởi vì một khi chữ cái của secretWord được đoán chính xác trong các chữ cáiGuessed thì nó sẽ loại nó khỏi lần đệ quy thứ hai. Tôi cần biết liệu có cách nào để loại trừ các chữ cái được đoán một lần khỏi danh sách các chữ cáiGuessed hay không.
Cảm ơn
Tái bút Tôi đã có giải pháp nhưng sử dụng mã khác trong một câu hỏi tương tự được hỏi ở đây, nhưng để hiểu tôi cần biết mình đã sai ở đâu.
Một số cách khắc phục:
>>> def isWordGuessed(secretWord, LettersGuessed):
... nếu secretWord=="" hoặc LetterGuessed==[]:
...trả về Sai
# secretWord[0:] chọn toàn bộ từ chứ không phải một ký tự đơn lẻ nên thay thế bằng secretWord[0]
# cũng lật điều kiện
... nếu secretWord[0] không có dạng chữĐoán:
...trả về Sai
# kiểm tra thêm từ cuối cùng nếu không nó sẽ thực hiện thêm một phép đệ quy nữa và trả về sai theo điều kiện 1
... if len(secretWord)==1 và secretWord dạng chữĐoán:
...trả về Đúng
...khác:
... return isWordGuessed(secretWord[1:],lettersGuessed)
...
>>> isWordGuessed('apple', ['a', 'e', 'i', 'k', 'p', 'r', 's'])
SAI
>>> isWordGuessed('apple', ['a', 'e', 'i', 'l', 'p', 'r', 's'])
ĐÚNG VẬY
Tôi là một lập trình viên xuất sắc, rất giỏi!