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给了我的代码什么?