Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';强制执行错误时,无法获取要打印的except语句_Python_Python 3.x_Error Handling - Fatal编程技术网

Python Can';强制执行错误时,无法获取要打印的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

强制执行错误时,我似乎无法打印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 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
是访问
的唯一方法,请尝试
/
,但
除外,因此您必须首先输入一些实际存在的值作为密钥,甚至可以访问异常处理程序。我已经解释过你是如何来自另一种编程语言的顺便说一句?不,是第一次程序员。我想我现在明白你的意思了。