2017-11-03 1 views
0

Also mache ich ein Programm, das nach Benutzereingaben fragt, um eine Variable zu definieren. Ich möchte, dass sie weiterhin dazu auffordert, Variablen zu definieren, bis sie das Programm beenden. I.E. es fordert A1 auf: und sie geben 2 ein, und dann fordert es A2 auf: und sie geben 6 ein, und so weiter, bis sie Enter drücken, ohne etwas einzugeben. Das Problem, das ich habe, ist, dass ich für jedes Mal, wenn es Schleifen gibt, eindeutige Variablen brauche. Ich möchte auch, dass diese Variablen auf die außerhalb der Funktion definierten Variablen zugreifen können, ohne global zu verwenden. HierUnendlich viele einzigartige generierte Variablen, python

ist, was ich habe:

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() 

Wie Sie sehen können, was es weiß gesetzt ist die Eingabe des Benutzers gleich v jeder Iteration. Ich möchte, dass es die erste Eingabe in A0 setzt, dann die nächste Iteration, ich möchte, dass die Eingabe auf A1 gesetzt wird, und so weiter und so fort. Dann, nachdem der Benutzer das ausgeführt hat, möchte ich in der Lage sein, die Variable A1 aufzurufen und ein Ergebnis zu erhalten. Irgendwelche Ideen?

EDIT: Also, hier ist mein Programm. Es nimmt eine Eingabe, fügt die Eingabe zu einer Liste hinzu und konvertiert dann die Listenelemente in globale Variablen. Ich wollte nicht global, aber ich musste.

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() 
+0

einen Behälter verwenden –

Antwort

0

Verwenden Sie eine Liste?

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() 
+0

Ich wollte nicht, aber das funktioniert wirklich gut, thx. – charlierw

0

Statt einer while-Schleife, eine for-Schleife in einer while-Schleife gewickelt machen, wie folgt aus:

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() 
+0

Dies bricht nicht am Ende, es geht einfach wieder um A0 zu fragen – charlierw

0

Wieder einmal ist hier die Antwort:

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() 
Verwandte Themen