Невозможно преобразовать строку в число с плавающей запятой Python, и код не выдает ожидаемый результат - PullRequest
0 голосов
/ 17 апреля 2020

Задача

Учитывая цену еды (базовая стоимость еды), процент чаевых (процент от цены еды, добавляемой в качестве чаевых) и процент налога (процент от цены еды, добавляемой как налог), найдите и распечатайте общую стоимость еды.

Общая стоимость еды = стоимость еды + чаевые + налог)

def solve(meal_cost,tip_percent,tax_percent):
    if __name__ == '__main__':
        meal_cost = float(input())

        tip_percent = int(input())

        tax_percent = int(input())

        tc = float(meal_cost + (tip_percent * meal_cost * 0.01) + (tax_percent * 0.01 * meal_cost))

        print(round(tc))

solve(12,20,8)

Ожидаемый результат не получен из кода , Кто-нибудь может объяснить эту ошибку? Сообщение об ошибке «ValueError: не удалось преобразовать строку в число с плавающей точкой: ''".

1 Ответ

0 голосов
/ 17 апреля 2020

Ошибка происходит от функции input(). Как только вы используете функцию solve, функции input() ожидают значения, но вы, вероятно, набираете Enter, чтобы solve двигался вперед. Решите enterprete enter и вызовите ValueError.

Вы должны написать свой код следующим образом:

def solve(meal_cost,tip_percent,tax_percent):
    if __name__ == '__main__':
        meal_cost = float(meal_cost)
        tip_percent = int(tip_percent)
        tax_percent = int(tax_percent)
        tc = float(meal_cost + (tip_percent * meal_cost * 0.01) + (tax_percent * 0.01 * meal_cost))
        print(round(tc))

solve(12,20,8)
15

Однако, если вы действительно хотите, чтобы ваша функция была интерактивной с помощью функции input(), вы могли бы напишите это так:

def solve():
    if __name__ == '__main__':
        meal_cost = float(input("enter meal_cost value : "))
        tip_percent = int(input("enter tip_percent value : "))
        tax_percent = int(input("enter tax_percent value : "))
        tc = float(meal_cost + (tip_percent * meal_cost * 0.01) + (tax_percent * 0.01 * meal_cost))
        print(round(tc))

solve()

Кстати, не нужно писать if __name__ == '__main__': внутри вашей функции; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...