【问题标题】:Can't get except statement to print when forcing an error强制出错时无法打印除语句
【发布时间】:2019-12-10 23:23:22
【问题描述】:

强制出错时,我似乎无法打印 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()

【问题讨论】:

  • 无复制。您只能通过输入来自PLANT_DATAdaisyrosecucumber)的密钥强制此代码中的错误,然后它会抛出NameError,而您不会这样做'抓不到。如果您没有输入上述答案之一,那么它会一直问同样的问题。
  • 我通过输入函数强制错误。例如,在字典中输入一个整数或错误的植物
  • 不,你不是。 if plant in PLANT_DATA.keys(): 成为 True 是访问您的 try/except 的唯一方法,因此您必须首先输入一些实际存在的值作为访问异常处理程序的键。我已经解释了如何
  • 顺便说一句,你是来自不同的编程语言吗?
  • 不,第一次程序员。不过我想我现在理解你了。

标签: python python-3.x error-handling


【解决方案1】:

你快到了。是的:

print("Looks like you want to hear about {} plants!".format(city))

几乎肯定会抛出错误,因为city 没有定义。但是保证会抛出错误,因为你有一个逻辑阻止程序:

if plant in PLANT_DATA.keys():

如果这不是True,您将永远无法访问您的异常处理程序。它会回到外部while 循环的另一个循环。要解决这个问题,您需要从PLANT_DATA 输入一个有效的key。因此,daisyrosecucumber 作为输入将清除此检查并确保您抛出错误。但是,它将是 NameError,而不是 ValueError

很容易抛出错误;例如,int('hi') 会引发错误,但它根本不适合您尝试的内容。所以我认为你在不改变逻辑的情况下保持原样是正确的;你在python testing 徘徊(这不是坏事)

【讨论】:

    【解决方案2】:

    以下行;

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

    【讨论】:

      猜你喜欢
      • 2014-02-27
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多