#python #python-3.x #floating-point
#python #python-3.x #значение с плавающей запятой
Вопрос:
Я пытаюсь написать программу для выполнения некоторых простых расчетов энергопотребления и затрат, логика правильная, и алгоритм работает для VB, но я хочу использовать Python. Будучи новичком в Python, я немного запутался относительно того, чего мне не хватает, код приведен ниже. Здесь я использовал некоторые соглашения, чтобы помочь мне понять, что происходит
IntWatts = input ("What is the Watt rating? ")
IntHoursOfUse = input ("How many hours is the device on for? ")
IntTariff = input ("What is the Tariff in cents? ")
IntEnergyRating = int(IntWatts)/1000
IntUsageKWH = int(IntEnergyRating) * IntHoursOfUse
IntCostInCents = IntUsageKWH * int(IntTariff)
IntCostInDollars = float(IntCostInCents) / 100
print('the Cent cost is :',IntCostInCents)
print("the Dollar cost is ;", IntCostInDollars)enter code here
Я использовал входные данные
Вт 240
HoursOfUse 5
Тариф 34.1
Спасибо
Ответ №1:
Что касается причины возникновения ошибки, это просто вопрос приведения к типу неправильной переменной, обратите внимание на пример ниже.
watts = input('What is the Watt rating?')
hours_of_use = input('How many hours is the device on for?')
tariff = input('What is the Tariff in cents?')
energy_rating = int(watts) / 1000
usage_kwh = energy_rating * int(hours_of_use)
cost_in_cents = usage_kwh * int(tariff)
cost_in_dollars = cost_in_cents / 100
print('The cent cost is :', cost_in_cents)
print('The dollar cost is :', cost_in_dollars)
Этот код должен выдать результаты, которые вы ищете. Что касается того, в чем здесь некоторые проблемы.
Следует отметить несколько моментов: вам нужно только привести сюда значения input (), поскольку они поступают в виде строк и должны интерпретироваться в вашей программе как целые числа.
В Python есть две формы деления, /
которые приводят к ожидаемым результатам в соответствии с тем, как мы, люди, изучаем математику, и //
которые уменьшат ваш результат; вот почему вам не нужно приводить к значениям с плавающей точкой.
Здесь есть много вещей, связанных с pythonic, которые вы можете устранить по мере изучения этого языка, хотя я не буду вдаваться в подробности, обратите внимание на соглашения об именовании. Переменные Python обычно _
разделяются строчными буквами и самодокументируются. Кроме того, считается довольно плохой практикой помечать переменные типом, это старое соглашение, которое вышло из практики.
Для дополнительной информации о Python ознакомьтесь с рекомендациями по кодированию: https://web.archive.org/web/20111010053227/http://jaynes.colorado.edu/PythonGuidelines.html#module_formatting
Ответ №2:
вам нужно ввести приведение IntHoursOfUse
к int
при инициализации IntUsageKWH
как:
# v Type casting this to int()
IntUsageKWH = IntEnergyRating * int(IntHoursOfUse)
# ^ No need to type-cast this as you are already doing it in previous line
Ответ №3:
Мне нужно было изменить входные данные, чтобы быть
IntWatts = int(input ("What is the Watt rating? "))
IntHoursOfUse = int(input ("How many hours is the device on for? "))
IntTariff = float(input ("What is the Tariff in cents? "))
а затем удалите все остальные команды int / float
Спасибо за помощь