Как написать условие в функции, чтобы сделать этот комментарий Python - PullRequest
1 голос
/ 07 ноября 2019

Как написать условие в функции, чтобы сделать этот комментарий «Пожалуйста, предоставьте два целых числа или числа с плавающей запятой» Теперь у меня есть 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")

Спасибо за все ответы

Ответы [ 3 ]

1 голос
/ 08 ноября 2019

Мой код слишком сложный :) правильный ответ:

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
1 голос
/ 07 ноября 2019

Измените свою функцию деления на это:

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

В этом случае вам не нужен первый if в вашем while цикле.

0 голосов
/ 07 ноября 2019

Ошибка, которую вы получаете, возникает, как только вы пытаетесь преобразовать ваш строковый ввод в число с плавающей запятой в одной из следующих строк:

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 гарантирует, что пользователя попросят повторить ввод, пока он фактически не предоставит два числа. С исключением (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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...