Хотя цикл не завершается, как ожидалось - PullRequest
0 голосов
/ 30 января 2019

Здравствуйте, извините за вопрос новичка, но это заставило меня почесать голову.Ранее я пытался использовать оператор break внутри оператора if для выхода из кода, но он прерывался независимо от ввода.Этот код выглядел так:

def describePet(petBreed, petName):
    print('I have a pet ' + petBreed)
    print('My ' + petBreed + '\'s name is ' + petName + '.')


while True:
    print('Type quit to exit.')
    breed = input('What is your pets breed?: ')
    name = input('What is your pets name?: ')
    if name or breed == 'quit':
        break
    else:
        describePet(breed, name)

print('test') 

Я был близок к тому, чтобы публиковать этот вопрос как вопрос, но с тех пор переформатировал его (однако я все равно был бы признателен за ответ) таким образом, чтобы получить желаемый результат, но яневозможно выйти из цикла при вводе ожидаемого оператора выхода.Переделанный код выглядит следующим образом:

def describePet(petBreed, petName):
    print('I have a pet ' + petBreed)
    print('My ' + petBreed + '\'s name is ' + petName + '.')


breed = None
name = None
while breed or name != 'quit':
    print('Type quit to exit.')
    breed = input('What is your pets breed?: ')
    name = input('What is your pets name?: ')
    describePet(breed, name)

print('test')

Если вы могли бы сообщить мне, почему этот код не завершается, когда я сохраняю строку quit в любой из переменных, это было бы очень полезно.Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Попробуйте эти шаги в своем коде.1. В первой части кода измените условие if следующим образом.(если имя == 'уйти' или порода == 'уйти')

def describePet(petBreed, petName):
  print('I have a pet ' + petBreed)
  print('My ' + petBreed + '\'s name is ' + petName + '.')

  while True:
    print('Type quit to exit.')
    breed = input('What is your pets breed?: ')
    name = input('What is your pets name?: ')
    if name =='quit'  or breed == 'quit':
        break
    else:
        describePet(breed, name)

А затем измените условие цикла while следующим образом.

в то время как порода! = 'Бросить' или имя! = 'Бросить'

0 голосов
/ 30 января 2019

Внутри цикла while сделайте что-то вроде этого:

def describePet(petBreed, petName):
print('I have a pet ' + petBreed)
print('My ' + petBreed + '\'s name is ' + petName + '.')


while True:
    print('Type quit to exit.')
    breed = input('What is your pets breed?: ')
    name = input('What is your pets name?: ')
    if name == 'quit' or breed == 'quit':
        break
    else:
        describePet(breed, name)

print('test') 

, используя что-то вроде name or breed == 'quit', никогда не будет иметь значение true, потому что сначала будет оцениваться name or breed, который всегда будет логическим значением иэто не то, что вы ожидаете.

...