Top.Mail.Ru
Ответы

Помогите с питоном.

Мне нужно создать программу в Python, которая будет производить вычисление третьего или общего резистора сопротивления. Для этого я написал такой код:

123456789101112131415161718192021222324252627
 print("Введите значение. Если оно неизвестное, введите '?' (без кавычек!).") 
R = input("R = ") 
R1 = 0 
R2 = 0 
R3 = 0 
 
if R == "?": 
    R1 = input("R1 = ") 
    R2 = input("R2 = ") 
    R3 = input("R3 = ") 
 
    R1 = float() 
    R2 = float() 
    R3 = float() 
 
    R_total  = R1*R2*R3 / R1*R2+R2*R3+R1*R3 
 
    R_total = float() 
 
    print(f"Ответ: R = {R_total}") 
elif R == float() or int(): 
    R1 = input("R1 = ") 
    R2 = input("R2 = ") 
 
    R3_total = R1*R2*R / R2*R+R1*R-R1*R2 
     
    print(f"Ответ: R = {R3_total}") 


В итоге Python ругается:

123456
 Traceback (most recent call last): 
  File "C:\Users\vladi\AppData\Roaming\JetBrains\PyCharmCE2023.2\scratches\scratch.py", line 18, in <module> 
    R_total  = R1*R2*R3 / R1*R2+R2*R3+R1*R3 
               ~~~~~~~~~^~~~ 
ZeroDivisionError: float division by zero 
 
По дате
По рейтингу
Аватар пользователя
Новичок
9мес

А смысл считать только частный случай? Считать надо любой.
Параллельное включение резисторов:

Разумно было бы разделить на две функции, но не принципиально:

12345678910111213
 def calc_R(args,Req=None): 
    try: 
        if Req: 
            return round(abs(1/(sum([1/R for R in args])-1/Req)),2) 
        else: 
            return round(1/sum([1/R for R in args]),2) 
    except ZeroDivisionError: 
        print('Некорректные данные') 
        return False 
     
 
print(calc_R([100,120,150])) 
print(calc_R([100,120], Req = 40))  

В этом коде функция принимает произвольный список номиналов резисторов. Если пришёл только список, то считает эквивалентное сопротивление. Если после списка указан дополнительный аргумент Req, то считает недостающий резистор в цепи по известному эквивалентному.

Аватар пользователя
9мес

Здесь полностью код переписывать надо. Где ты его взял и для чего?

Аватар пользователя
Просветленный
9мес

Запомните раз и навсегда: если хотите получить нормальный ответ, нужно давать ПОЛНУЮ постановку задачи, а не ваш сокращенный вариант.
А так - это просто гадание на кофейной гуще

Аватар пользователя
Ученик
9мес

это не питон, это кобра

Аватар пользователя
Просветленный
9мес

Вместо
R1 = input("R1 = ")
R2 = input("R2 = ")
R3 = input("R3 = ")

R1 = float()
R2 = float()
R3 = float()

Нужно

R1 = float(input("R1 = "))
R2 = float(input("R2 = "))
R3 = float(input("R3 = ") )