У меня есть while-loop
, вложенный в Class "Function/Block"
. Я занимался исследованиями, и предположим, что вы должны поставить self.Counter (for example)
, если вы хотите поставить счетчик в классе. До этого я использовал функцию break
, чтобы остановить мой while-loop
. Это может быть не в том месте, или оно было настроено неправильно, но, хотя это False
, он продолжает продолжаться. Вот код:Python 3: Как остановить цикл while В классе От запуска После того, как каждый класс я добавил?
class Class:
def __init__(self, Health, Attack, Defense):
self.Health = Health
self.Attack = Attack
self.Defense = Defense
self.Role = []
self.Move = []
self.RoleCount = 1
while(self.RoleCount > 0):
Input = input("What role do you want to be?\nChoices:\n1. Mage\n2. Warrior\n3. Archer\n4. Gunner\n")
if(Input.lower() in ['mage', 'warrior', 'archer', 'gunner']):
print("Your role is: %s" % (Input.upper()[0]+Input.lower()[1:]))
self.Role.append(Input.upper()[0]+Input.lower()[1:])
self.RoleCount -= 1
else:
print("That's not a role! Try again.")
Mage = Class(40, 20, 7)
Warrior = Class(60, 9, 10)
Archer = Class(50, 12, 18)
Gunner = Class(55, 16, 12)
Вам может понадобиться запустить это так, вы можете увидеть проблему я вижу, но всякий раз, когда я запускаю это, while-loop
продолжает идти даже после того, как это False
. Если вы скажете мне, почему это происходит и как это исправить, я был бы признателен :). Благодаря!
Кроме того, вот версия break
Я пробовал, прежде чем пробовал предыдущий код. Он все еще не остановил while-loop
.
class Class:
def __init__(self, Health, Attack, Defense):
self.Health = Health
self.Attack = Attack
self.Defense = Defense
self.Role = []
self.Move = []
while(True):
Input = input("What role do you want to be?\nChoices:\n1. Mage\n2. Warrior\n3. Archer\n4. Gunner\n")
if(Input.lower() in ['mage', 'warrior', 'archer', 'gunner']):
print("Your role is: %s" % (Input.upper()[0]+Input.lower()[1:]))
self.Role.append(Input.upper()[0]+Input.lower()[1:])
break
else:
print("That's not a role! Try again.")
Mage = Class(40, 20, 7)
Warrior = Class(60, 9, 10)
Archer = Class(50, 12, 18)
Gunner = Class(55, 16, 12)
Я предполагаю, что проблема является позиционирование while-loop
, но я действительно не знаю. Любое разъяснение было бы полезно!
Обновить информацию 1: Он продолжает работать для всех «классов», которые я создал, но мне нужны эти классы для проверки статистики для каждой роли, т. Е. «Маг», «Воин» и т. Д. Как мне сделать в то время как цикл выполняется один раз, хотя их четыре класса?
Классы:
Mage = Class(40, 20, 7)
Warrior = Class(60, 9, 10)
Archer = Class(50, 12, 18)
Gunner = Class(55, 16, 12)
Оба фрагмента отлично работают. Подробнее о предоставлении [MCVE]. –
Я просто попробовал ваш код без прерывания, и он отлично работает для меня. вы создаете четыре объекта, поэтому он просит вас ввести четыре раза. вы пытались создать только один объект? – sumit
@Rogalski Оба фрагмента, для меня, продолжают работать даже после того, как я отвечу «Маг» (например). Я делаю этот код на repl.it Python 3. – BradTheBrutalitist