Я пытаюсь вырваться из этого цикла. Я вернул False и добавил перерыв, если символ в слове не находится на руке, который является словарем с целыми значениями на букву, основанным на знаках букв Scrabble. Это часть более крупной игры, но эта конкретная функция проверяет, действительно ли введенное мной слово.Возвращение False для выхода из цикла
Теперь проблема заключается в том, что введенное слово отсутствует в списке слов, вход отклонен, и игроку предлагается ввести другое слово. ОДНАКО ... если я введу, например, одну букву, рука все еще обновляется, чтобы удалить это письмо, и поэтому недоступно, когда я перепечатываю слово, используя все три буквы.
Например:
если моя рука г у т
и я вхожу U, мое слово будет недействительна, но рука теперь содержит только г т. Поэтому колея больше не будет доступна.
У меня довольно хорошее представление о циклах и операторах возврата после последних 24 часов прямой кодировки, за исключением того, что я не могу понять, как структурировать этот цикл, чтобы избежать этой проблемы.
Вот код:
def is_valid_word(word, hand, word_list):
"""
Returns True if word is in the word_list and is entirely
composed of letters in the hand. Otherwise, returns False.
Does not mutate hand or word_list.
word: string
hand: dictionary (string -> int)
word_list: list of lowercase strings
"""
remaining = hand
for c in word:
if c not in remaining.keys(): """Loop 1"""
return False
break
if c in remaining.keys(): """Loop 2"""
remaining [c] -= 1
if remaining [c] < 0: """Loop 3"""
return False
if word in word_list:
return True
else:
return False
Однако я структурировать петли в конце концов условие потерпит неудачу. Если я сделаю отступ 2 и 3, то они потерпят неудачу, если письмо не находится в руке, и наоборот. Очевидно, что простое исправление было бы чем-то вроде break (n loops), но этого не существует в Python. Любые предложения, чтобы это произошло? Я работаю над этим долгое время, так как я новичок в программировании.
Заранее благодарен!
Возможный дубликат [Как вырваться из нескольких циклов в Python?] (Http://stackoverflow.com/questions/189645/how-to-break-out-of-multiple-loops-in- python) –
Я рассматривал этот вопрос несколько раз и не имел для меня большого смысла, и сценарий кажется немного другим. Я определенно пытаюсь сохранить этот код как можно более простым, потому что я нахожусь в начинающем курсе python, и ожидается простой ответ, так как мы еще слишком многому научились. Кроме того, я надеялся получить больше персонализированного ответа, поэтому я задал время и усилия, чтобы задать вопрос и поместить код. – Chris
Я не совсем понимаю, о чем вы просите слишком ясно, но вы можете установить переменную в true и loop, пока переменная истинна, а затем установите ее на false, где вам нужно выйти из цикла. – Harrison