为什么功能不循环,输入循环?

时间:2019-03-01 06:46:46

标签: python-3.7

我想将函数serial_circuit与三个不同的输入(1,2,3)一起使用。该功能假定可以接受用户的多次输入,直到 用户点击返回,结束程序并汇总所有输入。该程序仅接受一个输入并显示它。

def serial_circuit(num1):
    num = 0
    while(True):
        try:
            num += num1
        except:
            break
        return num

print("1.Solve for serial resistance: ")
print("2.Solve for serial coils: ")
print("3.Solve for parallel capacitors: ")
choice = input("Enter choice: ")

if choice == '1':
    num1 = float(input("Enter resistor value: "))
    num = serial_circuit(num1)
    print(f"Total resistance = {(num)} ohms")

elif choice == '2':
    num1 = float(input("Enter coil value: "))
    num = serial_circuit(num1)
    print(f"Total inductance = {(num)} henrys")

elif choice == '3':
    num1 = float(input("Enter capacitor value: "))
    num = serial_circuit(num1)
    print(f"Total capacitance = {(num):.6f} farads")

1 个答案:

答案 0 :(得分:0)

您的问题之一是您在循环内有return语句-注意缩进-在循环的第一次迭代期间,循环内将发生的最后一件事是从serial_circuit函数返回。 另一个问题是,您只要求输入一次-在循环之外。

看看这个解决方案:

def serial_circuit(text):
    num = 0
    finishedEntering = False

    while(not finishedEntering):
        try:
            received_input = input(text)
            if received_input == "":
                finishedEntering = True
            else:
                num1 = float(received_input)
                num += num1
        except:
            break
    return num

print("1.Solve for serial resistance: ")
print("2.Solve for serial coils: ")
print("3.Solve for parallel capacitors: ")
choice = input("Enter choice: ")

if choice == '1':
    num = serial_circuit("Enter resistor value or hit enter to finish: ")
    print(f"Total resistance = {(num)} ohms")

elif choice == '2':
    num = serial_circuit("Enter coil value or hit enter to finish: ")
    print(f"Total inductance = {(num)} henrys")

elif choice == '3':
    num = serial_circuit("Enter capacitor value or hit enter to finish: ")
    print(f"Total capacitance = {(num):.6f} farads")