Python - 将循环放入列表中

时间:2015-11-22 19:08:16

标签: python list loops

对于我的python程序,我被要求计算用户输入的电阻值。在程序中,我被要求演示数据处理,循环,列表和验证。

我有7个电阻值输入程序。对于每个电阻输入,我创建了一个如下的循环:

#Loop for Resistor 2:
while True :
    try:
        R2 = float(input( 'Resistor Value R2: ' ))
    except ValueError:
        print( 'Sorry, Invalid Input! Try Inputing A Number' )
        continue
    if R2 < 0 :
        print( 'Sorry, Invalid Input! Try A Positive Number ' )
        continue
    else :
        break

因为我有7个电阻器,所以我为这个程序输入了7个这样的循环。这完全没问题。但是我想将这些全部列入清单。因此,例如,不是为7个电阻器在7个不同时间写出这个循环,而是创建一个列表并将其写入一次并重复所有7个输入。

有人知道我该怎么做吗?我对python很新,很困惑。

4 个答案:

答案 0 :(得分:1)

values = {}
for i in range(1, 8):
    while True:
        try:
            value = float(input( 'Resistor Value R%s: ' % i ))
        except ValueError:
            print( 'Sorry, Invalid Input! Try Inputing A Number' )
            continue
        if value < 0:
            print( 'Sorry, Invalid Input! Try A Positive Number ' )
            continue
        else:
            values['R%s' % i] = value
            break

print( values )

>>> {"R1": 470.0, "R2": 68.0, "R3": 1.6, ...}

答案 1 :(得分:0)

您可以使用for循环并将值存储在列表中:

resistor_values = []

for i in range(7): # loop will have 7 iterations(0 - 6)
    # write code to be executed 7 times
    while True: 
        # this while loop ends when valid value for R is input
        # and stored in resistors
        try:
            R = float(input( 'Resistor Value R: ' ))
        except ValueError:
            print( 'Sorry, Invalid Input! Try Inputing A Number' )
            continue

        if R < 0:
            print( 'Sorry, Invalid Input! Try A Positive Number ' )
            continue
        else:
            resistors_values.append(R) # this appends R to the end of the list
            break

这应该会产生一个包含7个电阻值的列表

答案 2 :(得分:0)

这应该做的工作。它会推动列表中的所有有效电阻,在内部有一定数量的有效电阻后,它会断开。

resistors = []
while len(resistors) < 7:
    try:
        R = float(input( 'Resistor Value R: ' ))
    except ValueError:
        print( 'Sorry, Invalid Input! Try Inputing A Number' )
        continue
    if R < 0 :
        print( 'Sorry, Invalid Input! Try A Positive Number ' )
        continue
    else:
       resistors.append(R)

答案 3 :(得分:0)

你执行一个从1到7的for循环重复有问题的代码,并添加参数化提示到相关电阻的索引。

def ask_for_input(resistor_number):
    while True :
        input_string = input('Resistence value for Resistor {0}: '.format(resistor_number))
        try:
            resistence_value = float(input_string)
        except ValueError:
            print( 'Sorry, Invalid Input! Try Inputing A Number' )
            continue
        if resistence_value < 0 :
            print( 'Sorry, Invalid Input! Try A Positive Number ' )
            continue
        else :
            return resistence_value

resistences = []
for index in range(1, 8):
    resistences.append(ask_for_input(index))

print resistences