2017-04-01 4 views
0

Wie kann ein System das Gerät identifizieren und eine Datei speziell für das Gerät laden, die geeignete Fragen und Antworten enthält, z. B. wie viele Zoll der Bildschirm ist. Ich konnte dies auf Python tun, aber ich weiß nicht, wie man das gleiche auf einer CSV-Datei macht. Ich habe 3 Geräte, die das System identifizieren sollte, aber weil der Code lang ist, zeige ich nur ein Gerät an.Fragen und Lösungen zu einer CSV-Datei

Der Benutzer muss über die Eingabe mit dem Programm interagieren können.

+0

kann mir jemand helfen ??? –

+0

Müssen Sie Ihre Informationen wirklich in einer CSV-Datei (im Grunde eine Tabelle) speichern oder können Sie wählen, wie die Daten gespeichert werden? Wenn Sie die Freiheit haben, zu wählen, würde ich JSON sehr empfehlen, weil es besser mit einer hierarchischen Struktur funktioniert. Mit JSON können Sie Ihre Daten in einem Wörterbuch (zB '{device1: [(keywords, solution), (keywords, solution)], device2: [(keywords, solution)]}') ablegen und dann abhängig von der Benutzereingabe. – BurningKarl

+0

Danke. Ich habe JSON recherchiert und versucht, es in meinem Code zu implementieren, aber es funktioniert nicht. Kannst du mir helfen, den Code zu erstellen? ein Beispiel wäre in Ordnung, um mir eine Idee zu geben @BurningKarl –

Antwort

0

Ich würde vorschlagen, das JSON-Format zu verwenden, um Ihre Daten zu speichern, das gibt Ihnen mehr Flexibilität beim Speichern von Daten. Wenn Ihre JSON-Datei sieht wie folgt aus:

{ 
    "phone": { 
     "iphone": { 
      "iphone6": { 
       "8GB": [ 
        [ 
         [ 
          "keyword1", 
          "keyword2" 
         ], 
         "solution1" 
        ], 
        [ 
         [ 
          "keyword3", 
          "keyword4" 
         ], 
         "solution2" 
        ] 
       ], 
       "16GB": [ 
        ... 
       ] 
      }, 
      "iphone7": { 
       "8GB": ..., 
       "16GB": ... 
      }, 
     } 
     "samsung": ... 
    }, 
    "tablet": ... 
} 

(Die ... stellt die Daten, die Sie dort setzen) Dann können Sie die Benutzereingabedaten direkt als Schlüssel für Ihre Daten verwenden:

import json 

# read your data from a file 
with open("data.json") as f: 
    data = json.load(f) 

# ask for device 
while True: 
    device = input("Enter your device: ") 
    try: 
     device_data = data[device.strip().lower()] 
    except KeyError: 
     print("Please enter a valid device.") 
    else: 
     break 

# ask for manufacturer 
while True: 
    manufacturer = input("Enter the manifacturer of your device: ") 
    try: 
     manufacturer_data = device_data[manufacturer.strip().lower()] 
    except KeyError: 
     print("Please enter a valid manufacturer.") 
    else: 
     break 

# ask for model 
while True: 
    model = input("Enter your model: ") 
    try: 
     model_data = manufacturer_data[model.strip().lower()] 
    except KeyError: 
     print("Please enter a valid model.") 
    else: 
     break 

# ask for memory 
while True: 
    memory = input("Enter the amount of internal memory you have: ") 
    try: 
     memory_data = model_data[memory.strip().lower()] 
    except KeyError: 
     print("Please enter a valid amount.") 
    else: 
     break 

# ask for problem 
while True: 
    problem = input("Enter your problem: ") 
    words = problem.strip().lower().split(" ") 
    for keywords, solution in memory_data: 
     if set(words) & set(keywords): 
      print(solution) 
      break 
    else: 
     print("A solution could not be found, please describe your problem more clearly.") 

I .strip().lower() enthalten um mehr der möglichen Eingaben gültig zu machen. Dieser akzeptiert "iphone", "IPhone", "IPHONE" und " Iphone" als gültige Eingaben. Um Ihren Benutzern einen Überblick über mögliche Optionen zu geben, können Sie auch die Optionen in Ihren Fragen ausgeben. Dies ist ein Beispiel für die Hersteller:

options = list(device_data.values()) 
output = "Enter the manifacturer of your device ["+"/".join(options)+"]: " 
manufacturer = input(output) 

Diese Lösung funktioniert nur, wenn Sie die gleichen Fragen für jedes Gerät stellen wollen. Wenn dies nicht der Fall ist (z. B. möchten Sie den Benutzer nicht fragen, wie viel interner Speicher er hat, wenn er über eine Kamera spricht), können Sie die Frage in die JSON-Datei aufnehmen und die Fragen rekursiv stellen.

+0

Kann ich den JSON-Format auf einem Notizblock –

+0

verwenden, wenn Sie das JSON-Format in einen Notizblock konvertieren können, wird es –

+0

JSON ist nur eine spezielle Möglichkeit, Ihre Daten zu formatieren. Es besteht aus normalem Text und kann von jedem Editor, einschließlich Notepad ++ oder Microsoft Notepad, geschrieben und gelesen werden. (Sie brauchen '.json' nicht am Ende Ihrer Datendatei zu verwenden, Sie können es auch' data.txt' nennen) – BurningKarl