Python将输入变量存储在循环中,每次迭代使用不同的名称

时间:2018-12-02 05:36:16

标签: python loops

这是一个简单的循环。这是一个while循环,但是我不在乎它是for循环还是其他循环。

answer="y"
counter=1
while answer=="y":
    number=int(input("Enter number: "))
    answer=input("Want to continue? ")
    counter=counter+1

我想用不同的变量名(如果可能的话)存储在循环中输入的变量,以便可以执行以下简单的命令:

-打印输入的第一个数字

-在输入的第二个数字中加1

我认为它必须与柜台有关,例如

    number.counter=number
    print(number.counter)

但是正如您所猜测的那样,它是行不通的;;

3 个答案:

答案 0 :(得分:0)

创建变量n来保存每次迭代中输入的值的次数并不理想。这就需要像列表这样的东西,它可以容纳n个项目:

answer = "y"
numbers = []

while answer.lower() == "y":
    numbers.append(int(input("Enter number: ")))
    answer = input("Want to continue? ")

answer.lower()是有保证的检查(假设用户输入的是Y而不是y)

现在,这将输入第一个数字:

numbers[0]

第二个数字加1:

numbers[1] + 1

答案 1 :(得分:0)

我将使用collections库中的defaultdict来完成该任务。这将确保每个输入变量的索引位置。 使用索引和变量,您可以完成其余工作。

from collections import defaultdict

in_number = defaultdict(list)

loop = True
counter = 1
while loop:

    try:
        number = int(input("Enter number: "))
        in_number[counter] = number
        counter+=1
    # catch errors  
    except Exception as e:
            # find better way to deal with them
        print(e)

    continue_ = input("Want to continue? ")
    if continue_.lower() == 'y':
        loop = True
    else:
        loop = False

print('First number',in_number[1])
if len(in_number)>1:
    print('Second number +1', in_number[2]+1)

因此,我们使用while循环来填充用户输入的数字。每个数字都带有其索引。如果数字输入不是浮点数或整数,我们将捕获会出现的错误。我们要求继续并修改循环变量。最好的是,您可以添加更多继续选择。例如

continue_.lower() in ['y','yes','ja','continue']

希望这可以为您提供指导;)

答案 2 :(得分:0)

使用defaultdict from collections将所有数字及其相关名称存储为键/值对。

from collections import defaultdict

answer="y"
dic = defaultdict(list)
counter=1
while answer=="y":
    number = int(input("Enter number: "))
    numberx = 'number'+str(counter)
    dic[numberx] = number
    answer=input("Want to continue? ")
    counter=counter+1
print(dic)
print(dic.items())
print(dic.keys())
print(dic.values())

输出:

(python37) C:\Users\Documents>py test.py
Enter number: 12
Want to continue? y
Enter number: 87
Want to continue? y
Enter number: 90
Want to continue? y
Enter number: 12
Want to continue? n
defaultdict(<class 'list'>, {'number1': 12, 'number2': 87, 'number3': 90, 'number4': 12})
dict_items([('number1', 12), ('number2', 87), ('number3', 90), ('number4', 12)])
dict_keys(['number1', 'number2', 'number3', 'number4'])
dict_values([12, 87, 90, 12])