Мне нужны предложения по исправлению ошибки моего кода python, которая связана с попыткой найти watt_hours и amp_hours? - PullRequest
0 голосов
/ 07 августа 2020

Я новичок в программировании на python и в целом. В настоящее время я пытаюсь попрактиковаться в написании программы для будущего проекта с солнечной энергией. Мне нужно иметь возможность вводить вольты, ватты и амперы для расчета ампер-часов и ватт-часов при наличии одной неизвестной переменной. Я хотел бы получить несколько предложений по улучшению моего кода и исправлению ошибок, которые у меня есть.

Я использую -1 в моем коде, когда он запрашивает ввод для ампер, вольт и ватт как способ показать неизвестная переменная. Когда я знаю ватты и вольты, но не знаю ампер, программа отлично работает для расчета watt_hours и amp_hours. Однако, когда я ввожу -1 для неизвестной переменной для ватт или вольт, мои amp_hours и watt_hours становятся отрицательными, что не является реальным значением. Я мог бы использовать предложения по тому, как сделать эту простую программу более плавной, без каких-либо ошибок. Любые предложения помогут! Я застрял в том, что делать дальше, но я хотел бы увидеть, как более опытные программисты подойдут к этой небольшой проблеме.

К вашему сведению: эта программа используется для солнечной сборки для автодома:

**My code:**

#defining watts amps volts, amps-hours, and watt-hours.
def watts_calc(x, y):
    return amps * volts

def amps_calc(x, y):
    return watts/volts

def volts_calc(x, y):
    return watts / amps

def amp_hour(x, y):
    return amps * hours

def watt_hour(x, y):
    return watts * hours

#How many appliances are used in the Van
appliance_number = int(input("How many appliances are you trying to use? "))

#Setting up conditional arguments for while loop
condition = 1 

while condition <= appliance_number:

#Defining varibles
    amps = float(input("How many Amps does the device use: "))
    volts = float(input("How many Volts does the device use: "))
    watts = float(input("How many Watts is used: "))
    hours = float(input("How many hours of use? "))
    print("\n")

#a if/elif statement that takes input of watts, volts, amps in
    #to calculate the missing variable indicated by -1

    if amps == -1:
        print("Amps are: " + str(amps_calc(watts, volts)) + "A")
    elif volts == -1:
        print("Volts are: " + str(volts_calc(watts, amps)) + "v")
    elif watts == -1:
        print("Watts are: " + str(watts_calc(amps, hours)) + "W")
    
    else:
        print("Invalid Input")
    
    print("Watt-hours for appliance " + str(condition) + ": " + str(watt_hour(watts, hours)))
    print("Amp-hours for appliance " + str(condition) + ": " + str(amps_calc(watts, volts) * hours) + "\n")
    condition += 1

Ответы [ 3 ]

0 голосов
/ 07 августа 2020

в первую очередь вы можете захотеть сохранить эти числа в переменных в методах, вы могли бы вместо того, чтобы они вводили число, поместили их в символ для каждого метри c, который они хотят использовать, или один символ для метри c, которые они хотят найти, тогда просто имейте список этих символов и используйте для циклов, или вы можете поэкспериментировать с lamdba вместо использования стандартного синтаксиса для функций thos

0 голосов
/ 07 августа 2020

Кажется, что единственный способ получить отрицательное значение - это если у вас есть несколько отрицательных входов. Однако похоже, что вы sh разрешаете только одной переменной быть неизвестной. Дайте мне знать, если это не так.

Есть несколько способов решить эту проблему. Один из способов - переформатировать ваш код, чтобы спросить, какое вычисление хочет выполнить пользователь, а затем запросить значения соответственно.

Другой - использовать assert в ваших функциях или проверить, является ли одно из значений отрицательным с помощью оператор if. Вы также можете sh объединить оба этих параметра.

Дайте мне знать, если у вас возникнут дополнительные вопросы.

0 голосов
/ 07 августа 2020

Проблема в том, что если у вас есть -1 для неизвестного значения, вы просто распечатываете то, каким должно быть значение, но фактически не обновляете его для последующих вычислений. Сохраните результат в соответствующей переменной, и все будет в порядке.

    if amps == -1:
        amps = amps_calc(watts, volts)
        print("Amps are: " + str(amps) + "A")
    elif volts == -1:
        volts = volts_calc(watts, amps)
        print("Volts are: " + str(volts) + "v")
    elif watts == -1:
        watts = watts_calc(amps, hours)
        print("Watts are: " + str(watts) + "W")

Чужой ответ обнаружил дополнительную проблему, которая, хотя и не является основным источником вашей проблемы, также требует исправления. Этот ответ по какой-то причине был удален, поэтому я сам упомяну его здесь. В ваших функциях вы игнорируете параметры x и y в функции и вместо этого используете переменные из внешней области. Хотя в данном случае это сходит с рук, очевидно, что это также требует исправления. Например,

def watts_calc(x, y):
    return amps * volts

должно быть:

def watts_calc(amps, volts):
    return amps * volts

Тогда amps и volts будут параметрами функции, а не переменными, используемыми из внешней области. (Вы также можете использовать x и y, но тогда их значения менее ясны.)

...