Ошибка значения Python: недопустимый литерал для int () с основанием 10:

#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

Спасибо за помощь