#python #while-loop
#python #цикл while
Вопрос:
у меня возникли некоторые проблемы с пониманием того, почему мой цикл while / or не прерывается после выполнения второго условия
## Guess the word game
import random
secret_word = "computer"
guess = ""
vclueinput, vclueletter , vcluepos = "", "", ""
vtries, vlimit = 0, 5
while guess != secret_word or vlimit > 0: ## I've also tried with vlimit != 0 and fliping the condition's order
print("You have " str(vlimit) " guesses left")
guess = input("Guess the word: ")
if guess != secret_word and vlimit > 0:
vtries = 1
vlimit -= 1
vclueinput = input("Wrong! Do you want a clue? [Y/N]: ")
if vclueinput == "Y" or vclueinput == "y":
vcluepos = random.randint(0, int(len(secret_word)))
vclueletter = secret_word[vcluepos]
print((vcluepos) * "_" vclueletter ((int(len(secret_word))) - vcluepos - 1) * "_")
print("")
elif vclueinput == "N" or vclueinput == "n":
print("")
else:
print("error")
print("")
elif guess == secret_word:
print("Correct! The secret word is: " secret_word )
print("It took you " str(vtries) " guesses")
elif vlimit <= 0:
print("You are out of Guesses")
Как вы можете видеть, у меня есть счетчик уменьшения (vlimit), который может тормозить цикл while, как только он достигает 0, по какой-то причине цикл прерывается, guess = secret_word
но не тогда, когда vlimit = 0
он просто идет
print("You have " str(vlimit) " guesses left") ##vlimit being 0
guess = input("Guess the word: ")
print("You are out of Guesses")
Я надеюсь, что вы сможете мне помочь
Ответ №1:
Если вы используете or
, только одно из условий должно быть истинным для продолжения цикла.
Если вы хотите прервать цикл, если одно условие становится ложным, используйте and
. Нравится
while guess != secret_word and vlimit > 0:
Комментарии:
1. Привет! спасибо за ваш ответ! в этом случае я хочу, чтобы цикл прерывался, если выполняются либо условия, а не оба, в этом случае цикл прерывается только при выполнении первого условия, но если выполняется второе условие, цикл не прерывается
2. Этот подход делает именно то, что вы просите. Если какое-либо условие становится истинным, цикл прерывается
Ответ №2:
Кажется, вы можете добавить два break
оператора в свои коды, чтобы вы могли прервать цикл, если пользователь угадает правильно или когда его попытки достигнут предела, он выйдет.
## Guess the word game
import random
secret_word = "computer"
guess = ""
vclueinput, vclueletter , vcluepos = "", "", ""
vtries, vlimit = 0, 5
while guess != secret_word or vlimit > 0: ## I've also tried with vlimit != 0 and fliping the condition's order
print("You have " str(vlimit) " guesses left")
guess = input("Guess the word: ")
if guess != secret_word and vlimit > 0:
vtries = 1
vlimit -= 1
vclueinput = input("Wrong! Do you want a clue? [Y/N]: ")
if vclueinput == "Y" or vclueinput == "y":
vcluepos = random.randint(0, int(len(secret_word)))
vclueletter = secret_word[vcluepos]
print((vcluepos) * "_" vclueletter ((int(len(secret_word))) - vcluepos - 1) * "_")
print("")
elif vclueinput == "N" or vclueinput == "n":
print("")
else:
print("error")
print("")
elif guess == secret_word:
print("Correct! The secret word is: " secret_word )
print("It took you " str(vtries) " guesses")
break
elif vlimit <= 0:
print("You are out of Guesses")
break
Два break
оператора находятся в последних двух elif
операторах.
Надеюсь, вам понравится. Получайте удовольствие 🙂
Комментарии:
1. Большое вам спасибо!, я изучу
break
инструкции, чтобы узнать, когда и как их использовать.