Python Can';强制执行错误时,无法获取要打印的except语句
强制执行错误时,我似乎无法打印except语句Python Can';强制执行错误时,无法获取要打印的except语句,python,python-3.x,error-handling,Python,Python 3.x,Error Handling,强制执行错误时,我似乎无法打印except语句 PLANT_DATA = { 'daisy': 'diasy.csv', 'rose': 'rose.csv', 'cucumber': 'cucumber.csv' } def filters(): print('Let\'s explore some plant data') while True: plant = input("Would you lik
PLANT_DATA = { 'daisy': 'diasy.csv',
'rose': 'rose.csv',
'cucumber': 'cucumber.csv' }
def filters():
print('Let\'s explore some plant data')
while True:
plant = input("Would you like to see data for Cucumber, Daisy or Rose plants?").lower()
if plant in PLANT_DATA.keys():
try:
print("Looks like you want to hear about {} plants!".format(plant))
break
except ValueError:
print("That is not a valid plant! Please try again.")
filters()
下一行
if plant in PLANT_DATA.keys():
检查字典中是否存在提供的密钥。您永远不会到达except子句,因为您已经在代码前面执行了检查。这就是为什么每当您输入不正确的值时,它会再次提示您输入问题
如果需要打印错误,请尝试此操作
if plant not in PLANT_DATA.keys():
print("That is not a valid plant! Please try again.")
else:
print("Looks like you want to hear about {} plants!".format(city))
下一行
if plant in PLANT_DATA.keys():
检查字典中是否存在提供的密钥。您永远不会到达except子句,因为您已经在代码前面执行了检查。这就是为什么每当您输入不正确的值时,它会再次提示您输入问题
如果需要打印错误,请尝试此操作
if plant not in PLANT_DATA.keys():
print("That is not a valid plant! Please try again.")
else:
print("Looks like you want to hear about {} plants!".format(city))
你快到了。是的:
print("Looks like you want to hear about {} plants!".format(city))
几乎肯定会抛出错误,因为没有定义城市。但不能保证抛出错误,因为您有一个逻辑阻止程序:
if plant in PLANT_DATA.keys():
如果这不是真的
,则永远无法访问异常处理程序。它将返回到外部的另一个循环,而循环。要通过此操作,您需要从PLANT\u DATA
输入有效的键。因此,daisy
、rose
或cumber
作为输入将清除此检查并确保抛出错误。但是,这将是一个名称错误
,而不是值错误
很容易出错<例如,code>int('hi')
会抛出一个错误,但它根本不适合您正在尝试的上下文。因此,我认为你在不改变逻辑的情况下保持这个例子是正确的;你正在徘徊(这不是一件坏事)你就快到了。是的:
print("Looks like you want to hear about {} plants!".format(city))
几乎肯定会抛出错误,因为没有定义城市。但不能保证抛出错误,因为您有一个逻辑阻止程序:
if plant in PLANT_DATA.keys():
如果这不是真的
,则永远无法访问异常处理程序。它将返回到外部的另一个循环,而循环。要通过此操作,您需要从PLANT\u DATA
输入有效的键。因此,daisy
、rose
或cumber
作为输入将清除此检查并确保抛出错误。但是,这将是一个名称错误
,而不是值错误
很容易出错<例如,code>int('hi')
会抛出一个错误,但它根本不适合您正在尝试的上下文。因此,我认为你在不改变逻辑的情况下保持这个例子是正确的;您正陷入(这不是一件坏事)无需重新设置。您只能通过从PLANT_DATA
(daisy
、rose
或cucumber
)输入一个键来强制此代码中出现错误,然后它将抛出namererror
,您无法捕捉到该错误。如果您没有输入上述答案之一,那么它将继续问相同的问题。我通过输入函数强制执行错误。例如,在字典中输入一个整数或错误的工厂。不,你不是if plant in plant_DATA.keys():
为True
是访问的唯一方法,请尝试
/,但
除外,因此您必须首先输入一些实际存在的值作为密钥,甚至可以访问异常处理程序。我已经解释过你是如何来自另一种编程语言的顺便说一句?不,是第一次程序员。不过,我想我现在明白你的意思了。不要责备。您只能通过从PLANT_DATA
(daisy
、rose
或cucumber
)输入一个键来强制此代码中出现错误,然后它将抛出namererror
,您无法捕捉到该错误。如果您没有输入上述答案之一,那么它将继续问相同的问题。我通过输入函数强制执行错误。例如,在字典中输入一个整数或错误的工厂。不,你不是if plant in plant_DATA.keys():
为True
是访问的唯一方法,请尝试
/,但
除外,因此您必须首先输入一些实际存在的值作为密钥,甚至可以访问异常处理程序。我已经解释过你是如何来自另一种编程语言的顺便说一句?不,是第一次程序员。我想我现在明白你的意思了。