【问题标题】:Infinite amount of unique generated variables, python无限数量的唯一生成变量,python
【发布时间】:2018-04-15 15:57:53
【问题描述】:

所以,我正在制作一个程序,要求用户输入来定义一个变量。我想要它做的是不断提示他们定义变量,直到他们终止程序。 IE。它提示 A1:他们输入 2,然后它提示 A2:他们输入 6,依此类推,直到他们按 enter 而不输入任何内容。我遇到的问题是每次循环时我都需要唯一的变量。我还希望这些变量能够访问函数外部定义的变量,而无需使用全局变量。

这是我得到的:

def userinput():
    n = 0
    while n >= 0:
        c = str(n)
        v = 'A'+c+':'
        v = input(v)
        if v != '':
            n += 1
        else:
            while v == '':
                break
            break
userinput()

如您所见,它所知道的是将用户的输入设置为每次迭代等于 v。我希望它将第一个输入设置为 A0,然后下一次迭代,我希望它的输入设置为 A1,依此类推。然后,在用户运行它之后,我希望能够调用变量 A1 并获得结果。有什么想法吗?

编辑: 所以,这是我的程序。它接受输入,将输入添加到列表中,然后将列表项转换为全局变量。我不想使用全局,但我不得不这样做。

def userinput():
    n = 0
    values = []
    while True:
        c = str(n)
        v = 'A'+c+':'
        v = input(v)
        values.append(v)
        if v != '':
            n += 1
        else:
            while v == '':
                values.remove(v)
                break
            break
    for x, val in enumerate(values):
        globals()['A%d' % (x)] = val
    return values
data = userinput()

【问题讨论】:

  • 使用容器

标签: python python-3.x list while-loop user-input


【解决方案1】:

使用列表?

def getUserInput():
  values = []
  while True:
    val = input("Enter a value (press enter to finish):")
    if not val:
      break
    values.append(val)
  return values

data = getUserInput()

【讨论】:

    【解决方案2】:

    用一个 for 循环包裹在一个 while 循环中,而不是一个 while 循环,像这样:

    def userinput():
    n = 0
    while n >= 0:
        for x in range(100):
            v = 'A'+x+':'
            v = input(v)
            if v != '':
                n += 1
            else:
                while v == '':
                    break
                break
    userinput()
    

    【讨论】:

    • 这并没有在最后中断,它只是返回询问 A0
    【解决方案3】:

    再一次,这是答案:

    def userinput():
        n = 0
        values = []
        while True:
            c = str(n)
            v = 'A'+c+':'
            v = input(v)
            values.append(v)
            if v != '':
                n += 1
            else:
                while v == '':
                    values.remove(v)
                    break
                break
        for x, val in enumerate(values):
            globals()['A%d' % (x)] = val
        return values
    data = userinput()
    

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 1970-01-01
      • 2019-11-08
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2011-05-13
      相关资源
      最近更新 更多