Python 而循环未按预期退出

Python 而循环未按预期退出,python,python-3.x,while-loop,Python,Python 3.x,While Loop,您好,很抱歉问初学者的问题,但这让我挠头。我以前曾尝试在if语句中使用break语句来退出代码,但无论输入如何,都会中断。代码如下所示: def describePet(petBreed, petName): print('I have a pet ' + petBreed) print('My ' + petBreed + '\'s name is ' + petName + '.') while True: print('Type quit to exit.')

您好,很抱歉问初学者的问题,但这让我挠头。我以前曾尝试在if语句中使用break语句来退出代码,但无论输入如何,都会中断。代码如下所示:

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')
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') 
我差点把它作为一个问题发布出来,但后来又重新格式化了。不过,我还是希望能以这样一种方式给出一个答案,即我能够获得所需的输出,但在输入预期的退出语句时无法中断循环。重做代码如下所示:

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')
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') 

如果您能让我知道,当我将字符串quit存储在任一变量中时,为什么这段代码没有退出,我们将不胜感激。谢谢大家!

在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 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')
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或breed==“quit”之类的值永远不会计算为true,因为它将首先计算name或breed,而name或breed始终是一个布尔值,而这不是您所期望的值。

请尝试以下步骤以在代码中添加新的值。 1.在代码的第一部分中,按如下所示更改if条件。如果name=='quit'或breed=='quit'

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循环条件,如下所示

而繁殖“退出”或“名称!=”退出


如果name='quit'或breed='quit',请更正这样的条件。while条件中存在相同的逻辑错误。while繁殖或名称!='“退出”不会像您预期的那样起作用。它会检查品种是否存在或名称是否为“退出”。啊,好的,我现在明白了。谢谢你。你可以对答案进行投票,这样对其他人也会有帮助。我有,但因为我的声誉太低,所以没有公开。