如何在函数中编写条件以使此注释成为Python
如何在函数中编写一个条件,以使注释“请提供两个整数或浮点” 现在我有一个ValueError,比如“无法转换字符串或浮点” 我有一个问题:如何在函数中编写条件以使此注释成为Python,python,python-3.x,valueerror,Python,Python 3.x,Valueerror,如何在函数中编写一个条件,以使注释“请提供两个整数或浮点” 现在我有一个ValueError,比如“无法转换字符串或浮点” 我有一个问题: while True: if num2 == []: # wrong condition print("Please provide two integers or floats") 对于所有答案,请将除法功能更改为: def divede(): num1 = input("Enter first number:") nu
while True:
if num2 == []: # wrong condition
print("Please provide two integers or floats")
对于所有答案,请将除法功能更改为:
def divede():
num1 = input("Enter first number:")
num2 = input("Enter second number:")
try:
num1, num2 = float(num1), float(num2)
except ValueError:
print("Invalid entry, please enter numbers")
return divede()
return num1, num2
在这种情况下,您不需要在
while
循环中使用第一个if
。当您尝试将字符串输入转换为以下某行中的float时,就会出现错误:
num1 = float(input("Enter first number:"))
num2 = float(input("Enter second number:"))
我建议您将divede函数更改为以下内容:
def divede():
while True:
try:
num1 = float(input("Enter first number:"))
num2 = float(input("Enter second number:"))
return num1, num2
except(ValueError):
print("Please provide two integers or floats")
while循环确保要求用户重复输入,直到用户实际提供两个数字。
except(ValueError)仅用于捕获您想要的特定错误。
然后还需要更改脚本的其余部分,如下所示:
while True:
if num2 != 0:
print(f"{num1} / {num2} is {num1 / num2}")
break
else:
print("Please do not divede by zero")
num1, num2 = divede()
我的代码太复杂:) 正确答案是:
def divide(a,b):
try:
total = a / b
except TypeError:
return "Please provide two integers or floats"
except ZeroDivisionError:
return "Please do not divide by zero"
return total
从用户获取输入时,请使用try…except块。因此,当用户输入字符串而不是int或float时,将引发异常。使用打印处理它(“请提供两个整数或浮点数”)
num2
是一个浮点数
,[]
是一个列表
。默认情况下,python不知道如何解析该比较。如果在获取num2
时已经转换为float
,则无需检查它是否为空。如果是,您将在输入本身中获得ValueError
。您为什么除了ValueError而不进行全面检查?好像是坏习惯。
def divide(a,b):
try:
total = a / b
except TypeError:
return "Please provide two integers or floats"
except ZeroDivisionError:
return "Please do not divide by zero"
return total