【问题标题】:How to write a condition in a function to make this comment Python如何在函数中编写条件以发表此评论 Python
【发布时间】:2020-03-03 17:10:47
【问题描述】:

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

def divede():

   num1 = float(input("Enter first number:"))
   num2 = float(input("Enter second number:"))
   return num1, num2


num1, num2 = divede()

while True:
   if num2 == []:
       print("Please provide two integers or floats")

   elif num2 != 0:

       print(f"{num1} / {num2} is {num1/num2}")
       break

   else:

       print("Please do not divede by zero")
       num1, num2 = divede()

def divede():

   num1 = float(input("Enter first number:"))
   num2 = float(input("Enter second number:"))
   return num1, num2


num1, num2 = divede()

while True:
   if num2 == []:
       print("Please provide two integers or floats")

   elif num2 != 0:

       print(f"{num1} / {num2} is {num1/num2}")
       break

   else:

       print("Please do not divede by zero")
       num1, num2 = divede()

这里有个问题:

while True:
   if num2 == []: # wrong condition
       print("Please provide two integers or floats")

感谢所有答案

【问题讨论】:

  • 当您从用户那里获取输入时,请使用 try...except 块。因此,当用户输入字符串而不是 int 或 float 时,会引发异常。用 print("请提供两个整数或浮点数") 处理它
  • num2float[]list。默认情况下,python 不知道你想如何解决这个比较
  • 因为你在得到num2时已经转换成float,所以不需要检查它是否为空。如果是,您将在输入本身中获得ValueError

标签: python python-3.x valueerror


【解决方案1】:

我的代码太复杂了 :) 正确答案是:

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

【讨论】:

    【解决方案2】:

    将除法函数更改为:

    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

    【讨论】:

    • 有什么理由你不是 except ValueError 而不是全力以赴?似乎是不好的做法。
    【解决方案3】:

    当您尝试将字符串输入转换为以下行之一时,就会出现错误:

    num1 = float(input("Enter first number:"))
    num2 = float(input("Enter second number:"))
    

    我建议您将您的潜水功能更改为以下内容:

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2022-09-29
      • 2022-01-12
      相关资源
      最近更新 更多