2017-01-30 9 views
1

Ich versuche, eine Funktion schreiben, die eine Benutzer eingegebene Liste nimmt, und wandelt es in eine Zeichenfolge, die jeden Wert in der Liste mit einem Komma trennen, und die letzte Wert in der Liste mit "und". Zum Beispiel würde die Liste ["Katzen", "Hunde", "Kaninchen", "Fledermäuse"] in "Katzen, Hunde, Kaninchen und Fledermäuse" umgewandelt. Mein Code funktioniert, wenn ich einer Variablen eine Liste zuweise und dann die Variable an meine newString-Funktion übergebe, aber wenn ich eine Benutzereingabe an meine Funktion übergebe, behandelt sie jedes Zeichen in der Benutzereingabe als separaten Listenwert.Python: Wie Benutzereingaben als eine Liste zu interpretieren (Anfänger)

Also meine Frage ist, wie kann ich Python sagen, dass ich Input() als eine Liste gelesen werden soll. Ist das überhaupt möglich? Ich bin sehr neu in Python und Programmierung im Allgemeinen, also ist Lists and Tuples soweit ich weiß. Ich lerne jetzt Wörterbücher. Mein Code ist unten gedruckt, danke.

+0

Dies ist mit Zahlen verwandt, aber es ist im Grunde die gleiche Idee. http://stackoverflow.com/questions/4663306/get-a-list-of-numbers-as-input-from-the-user – akousmata

Antwort

0

input() gibt Ihnen immer nur eine Zeichenfolge.

Sie können diese Zeichenfolge analysieren, je nachdem, wie der Benutzer die Liste eingeben soll.

Zum Beispiel kann der Benutzer es Leerzeichen getrennt wie 'cats dogs rabbits bats' eingeben. Dann tun Sie

input_list = input().split() 
print(listToString(input_list)) 

können Sie auch aufgeteilt auf , oder jedes Trennzeichen Sie mögen.

+0

Ihre Anweisung * "input() gibt Ihnen immer nur eine Zeichenfolge" * ist nur wahr im Fall von Python 3. In Python 2 gibt es den Typ des Objekts zurück (basierend auf 'eval' Wert) –

+0

@MoinuddinQuadri Guter Punkt! :) Aber Python 3 ist das einzige Python, das ich benutze, alle anderen ohne Legacy-Abhängigkeiten sollten verwenden, Neulinge sollten * und * lernen, was in der Frage getaggt ist. – Hannes

0

Wenn Sie eine Liste wörtliche aus Benutzereingaben zu lesen, benutzen Sie ast.literal_eval es zu analysieren:

import ast 

input_list = ast.literal_eval(input()) # or ast.literal_eval(raw_input()) on Python 2 
0

Sie eine Liste aus dem Eingang bauen könnten und Ihren aktuellen Code verwenden, es zu formatieren, wie Sie wollen.

def get_user_input(): 
    my_list = [] 
    print('Please input one word for line, leave an empty line to finish.') 
    while True: 
     word = input().strip() 
     if word: 
      my_list.append(word) 
     else: 
      break 
    return my_list 
Verwandte Themen