如何从用户输入的数字创建多个变量

时间:2015-05-06 20:55:09

标签: python loops

我正在创建一个脚本,询问用户他们想要比较多少数据集。

用户输入一个数字,我想知道是否有办法,使用循环,为用户输入的数字创建一些变量。

input_SetNum = input("How many data sets are you comparing: ")
print ("You entered " + input_SetNum) 

data_sets = {}
for i in range(1, input_SetNum+1):
data_sets[i] = input("Please enter the file path a data set: ")

4 个答案:

答案 0 :(得分:2)

你可以使用字典。

data_sets = {}
for i in range(1, input_SetNum+1):
    data_sets[i] = # data set value here

修改

如果您使用的是Python 3,则完整代码应为:

input_SetNum = input("How many data sets are you comparing: ")
print ("You entered " + input_SetNum) 

data_sets = {}
for i in range(1, int(input_SetNum)+1):
    data_sets[i] = input("Please enter the file path a data set: ")

print(data_sets)

当输入3时,打印data_sets将产生此结果:

{1: '/path/file1', 2: '/path/file2', 3: '/path/file3'}

如果您使用的是Python 2.7,那么您应该用input()替换所有raw_input

编辑2:

要根据路径打开CSV文件,您可以在已完成的工作中使用此类代码。

for key in data_sets:
    with open(data_sets[key]) as current_file:
        # do stuff here

也可以在之前用于文件路径的open()上使用input()

data_sets[i] = open(input("Please enter the file path a data set: "))

我不是100%确定这是否有效,因为我对CSV文件不是很熟悉,但它不会受到伤害,如果它确实有效,那么比较数据集会更容易。

答案 1 :(得分:1)

只需使用一个列表 - 每个数字都有一个元素。

答案 2 :(得分:0)

您可以使用

在工作区中定义变量
for i in input_SetNum:
    vars()["var%s=value" % (i)] = value

你可能希望将它放在一个长期的类中,其中类的变量由,

定义
class SomeObj:
    def __init__(self, input_SetNum, values):
        for i in input_SetNum:
            vars(self)["var%s=value" % (i)] = values[i]

答案 3 :(得分:0)

你肯定是在正确的道路上。您的代码与我为同一任务生成的代码没有什么不同。我的大部分更改都是偏好问题,主要是我使用列表而不是字典,因为在这种情况下似乎没有任何压倒性的理由使用字典;您似乎主要以与使用其他语言的数组相同的方式使用它,或者作为不需要明确.append().extend()个新项目的列表。

# Python 3.  For Python 2, change `input` to `raw_input` and modify the
# `print` statement.
while True:  # Validate that we're getting a valid number.
    num_sets = input('How many data sets are you comparing?  ')

    try:
        num_sets = int(num_sets)

    except ValueError:
        print('Please enter a number!  ', end='')

    else:
        break

data_sets = []

# Get the correct number of sets.  These will be stored in the list,
# starting with `data_sets[0]`.
for _ in range(num_sets):
    path = input('Please enter the file path a data set:  ')
    data_sets.append(path)

如果您输入了3的套数,则会将data_sets设为等于

['data_set_0', 'data_set_2', 'data_set_3']

获取适当的输入。