Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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
PythonValueError-如何更改代码以使其出现异常?_Python_Python 3.x - Fatal编程技术网

PythonValueError-如何更改代码以使其出现异常?

PythonValueError-如何更改代码以使其出现异常?,python,python-3.x,Python,Python 3.x,就像这个话题一样。虽然我给非数字值,但它不会引发异常,而是在控制台中引发错误。如何改进代码,使其按预期工作 def div(): given = False while not given: a = int(input("Input first number: ")) b = int(input("Input second number: ")) try: c =

就像这个话题一样。虽然我给非数字值,但它不会引发异常,而是在控制台中引发错误。如何改进代码,使其按预期工作

def div():
    given = False

    while not given:
        a = int(input("Input first number: "))
        b = int(input("Input second number: "))

        try:
            c = (a / b)
        except ValueError:
            print('Value Error - provide two numbers')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

使用类似以下内容:

也在try块中添加输入,并为此添加一个except块

def div():
    given = False

    while not given:
    

        try:
            a = int(input("Input first number: "))
            b = int(input("Input second number: "))
            c = (a / b)
        except ValueError:
            print('Value Error - provide two numbers')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

使用类似以下内容:

也在try块中添加输入,并为此添加一个except块

def div():
    given = False

    while not given:
    

        try:
            a = int(input("Input first number: "))
            b = int(input("Input second number: "))
            c = (a / b)
        except ValueError:
            print('Value Error - provide two numbers')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

您需要重新排列代码,并将
输入
放入
try/except
块中。此外,您只需在为True时使用

def div():
    while True:
        try:
            a = int(input("Input first number: "))
            b = int(input("Input second number: "))
            c = (a / b)
        except ValueError:
            print('Value Error - provide two numbers')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

您需要重新排列代码,并将
输入
放入
try/except
块中。此外,您只需在为True时使用

def div():
    while True:
        try:
            a = int(input("Input first number: "))
            b = int(input("Input second number: "))
            c = (a / b)
        except ValueError:
            print('Value Error - provide two numbers')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

这是因为您正在将输入转换为
try
块之外的整数。 尝试(双关语)将其移动到
Try
块中:

def div():
    given = False
    while not given:
        try:
            a = int(input("Input first number: "))
            b = int(input("Input second number: "))
            c = (a / b)
        except ValueError:
            print('Value Error - provide a number')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

这是因为您正在将输入转换为
try
块之外的整数。 尝试(双关语)将其移动到
Try
块中:

def div():
    given = False
    while not given:
        try:
            a = int(input("Input first number: "))
            b = int(input("Input second number: "))
            c = (a / b)
        except ValueError:
            print('Value Error - provide a number')
            continue
        except ZeroDivisionError:
            print('Zero Division Error')
            continue
        return f'a/b = {c}'

print(div())

问题是字符串必须是数字。因此,在应用
int()
之前,需要断言用户的输入是否为数字。因此,我只需在try中添加
int()
,它就会捕获它

def div():
给定=假
虽然没有给出:
a=输入(“输入第一个数字:”)
b=输入(“输入第二个数字:”)
尝试:
c=(整数(a)/整数(b))
除值错误外:
打印('值错误-提供两个数字')
持续
除零误差外:
打印('零除法错误')
持续
返回f'a/b={c}'
打印(div())

问题在于字符串必须是数字。因此,在应用
int()
之前,需要断言用户的输入是否为数字。因此,我只需在try中添加
int()
,它就会捕获它

def div():
给定=假
虽然没有给出:
a=输入(“输入第一个数字:”)
b=输入(“输入第二个数字:”)
尝试:
c=(整数(a)/整数(b))
除值错误外:
打印('值错误-提供两个数字')
持续
除零误差外:
打印('零除法错误')
持续
返回f'a/b={c}'
打印(div())

将非数字输入转换为int时,错误已经发生。请先检查它是否为数字,或者也使用try..catch。将非数字输入转换为int时,错误已经发生。请先检查它是否为数字,或者也使用try..catch。请解释为什么使用“while True”(我之前的given=False/虽然没有给出:)是必要的吗?我真的不明白。@kurdebalans:没有必要,但遵循相同的逻辑,而且更短。我知道这几乎是一样的,但我只是不明白为什么我必须首先编写此代码?while给我的代码带来了什么?你能解释一下为什么使用while True吗(我之前的given=False/虽然没有给出:)是必要的吗?我真的不明白。@kurdebalans:没有必要,但遵循相同的逻辑,而且更短。我知道这几乎是一样的,但我只是不明白为什么我必须首先编写此代码?while给了我的代码什么?