2017-10-29 6 views
-2

Ich habe den folgenden Code erstellt, habe aber festgestellt, dass ein Fehler darin besteht, dass ich den Rest meiner Codes nicht erfolgreich abschließen kann.Nur erster Buchstabe, der als falsch erkennt, nicht andere, wie kann alles betrachtet werden?

der Code:

def isvalid(userg, valid_c, size): 
'''(list, str, int) -> bool 
Given userg, a list of single character strings; 
valid_ch, a string; and size, an int; 
return True if every character in user_guess list is in 
valid_characters and if user_guess is of length guess_size. 
Return False otherwise. 
>>>isvalid(['A', 'B', 'C'], 'ABCDE', 3) 
True 
>>>isvalid(['Y', 'G', 'O', 'B'], 'YGOBPR', 4) 
True 
>>>isvalid(['X', 'G', 'O', 'B'], 'YGOBPR', 4) 
False 
>>>isvalid(['Y', 'G', 'O', 'B'], 'YGOBPR', 5) 
False 
>>>valid(['Y', 'G', 'O'], 'GOBPR', 4) 
False 
''' 
for char in userg: 
    if len(userg) == size and char in valid_c: 
     return True 
    else: 
     return False 

Aber es funktioniert nur falsch zurück, wenn der erste Brief in userg nicht in valid_c ist. Zum Beispiel gibt isvalid (['Y', 'K', 'O', 'B'], 'YGOBPR', 4) wahr zurück, weil, solange 'K' nicht in valid_c ist, es nicht in der ersten Position ist (where das Y ist), also erkennt es es nicht als falsch/falsch. Wenn ich isvalid (['K', 'Y', 'O', 'B'], 'YGOBPR', 4) hätte, würde es es als Falsch erkennen, weil K das erste ist. Kann mir bitte jemand helfen? Ich habe andere Dinge ausprobiert, aber sie haben nicht funktioniert. Vielen Dank!

+2

Wissen Sie, was die 'return' Anweisung tut? Sie sollten 'weiter' machen, wenn die Bedingung 'Wahr' ist und dann 'Wahr' zurückgeben, nachdem alle Punkte am Ende der * for * Schleife überprüft wurden. –

+0

Was Sie wollen, ist 'return len (userg) == size und all (char in valid_c für char in userg)'. Das ist in der Tat eine direkte Übersetzung der Anforderungen in den Kommentar. –

Antwort

0

vielleicht meinst du sowas?

def isvalid(userg, valid_c, size): 
    return len(userg) == size and all(char in userg for char in valid_c) 
+0

Nein, nicht genau. – Daniel

Verwandte Themen