如何在函数中编写条件以使此注释成为Python

如何在函数中编写条件以使此注释成为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

如何在函数中编写一个条件,以使注释“请提供两个整数或浮点” 现在我有一个ValueError,比如“无法转换字符串或浮点”

我有一个问题:

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