尝试和Python除外

问题描述 投票:0回答:2

我做了这个例子但是它没有运行try和Python中的处理错误。

def my_fun(numCats):
    print('How many cats do you have?')
    numCats = input()
    try:
        if int(numCats) >=4:
            print('That is a lot of cats')
        else:
            print('That is not that many cats')
    except ValueError:
        print("Value error")

我试过了:

except Exception:
except  (ZeroDivisionError,ValueError) as e:
except  (ZeroDivisionError,ValueError) as error:

我做了其他的例子,它能够捕获ZeroDivisionError我正在使用Jupyter笔记本Python 3.任何帮助在这件事非常感谢。

我在打电话

my_fun(int('six'))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-39-657852cb9525> in <module>()
----> 1 my_fun(int('six'))

ValueError: invalid literal for int() with base 10: 'six'
python function exception error-handling try-catch
2个回答
1
投票

一些问题:

  1. 请修复缩进。缩进级别不匹配。
  2. 无需接受参数numCats,因为它已更改为用户提供的任何内容。
  3. 你没有调用函数my_fun(),这意味着永远不会有任何输出,因为函数只在被调用时运行。

这应该工作:

def my_fun():
    print('How many cats do you have?\n')
    numCats = input()
    try:
        if int(numCats) > 3:
            print('That is a lot of cats.')
        else:
            print('That is not that many cats.')
    except ValueError:
        print("Value error")  

my_fun() ## As the function is called, it will produce output now

1
投票

这是您的代码的重写版本:

def my_fun():
    numCats = input('How many cats do you have?\n')
    try:
        if int(numCats) >= 4:
            return 'That is a lot of cats'
        else:
            return 'That is not that many cats'
    except ValueError:
        return 'Error: you entered a non-numeric value: {0}'.format(numCats)

my_fun()

说明

  • 如上所述,您需要调用您的函数才能运行它。
  • 缩进很重要。这与指南一致。
  • input()将输入前显示的字符串作为参数。
  • 由于用户通过input()提供输入,因此您的函数不需要参数。
  • 优良的做法是return价值观,如有必要,之后再打印。而不是你的功能print字符串和return没有。
  • 您的错误可能更具描述性,并包含不恰当的输入本身。
© www.soinside.com 2019 - 2024. All rights reserved.