2017-04-01 27 views
0

システムはデバイスを特定し、画面に何インチなどの適切な質問と応答を含むデバイス専用のファイルをどのように読み込むことができますか? 私はこれをpythonで行うことができましたが、私はcsvファイルで同じことをする方法がわかりません。 私は3つのデバイスを持っていますが、コードは長いので1つのデバイスしか表示されないため、システムで識別する必要があります。csvファイルの質問と解決策

ユーザは、入力を介してプログラムとやり取りできなければなりません。

+0

誰かが私を助けることができますか? –

+0

本当にあなたの情報をcsvファイル(基本的にテーブル)に保存する必要がありますか、またはデータの保存方法を選択できますか?自由に選ぶことができれば、階層構造でうまくいくのでJSONを強くお勧めします。 JSONを使用すると、データを辞書に保存することができます(例: '{デバイス1:[(キーワード、ソリューション)、(キーワード、ソリューション)]、device2:[(キーワード、ソリューション)]}))ユーザ入力。 – BurningKarl

+0

ありがとうございます。私はJSONについて研究し、コードで実装しようとしましたが、動作しません。コードを作成するのを手伝ってください。 @BurningKarl –

答えて

0

データを保存するためにJSON形式を使用することをお勧めします。これにより、データの格納方法の柔軟性が向上します。あなたのJSONファイルは、次のようになります場合:

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

次に、あなたのデータのためのキーとして直接ユーザ入力データを使用することができます(...は、あなたがそこに置くデータを表す):私は.strip().lower()を含ま

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.") 

を可能な入力の多くを有効にする。これは、有効な入力として"iphone","IPhone","IPHONE"および" Iphone"を受け入れます。どのオプションが可能かの概要をユーザーに伝えるために、質問にオプションを出力することもできます。これは、メーカーの例です。

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

このソリューションあなたはすべてのデバイスに同じ質問をしたい場合にのみ機能します。そうでない場合(たとえば、カメラについて話すときにユーザーがどれだけの内部メモリを持っているか尋ねたくない場合など)、その質問をJSONファイルに含めて再帰的に質問することができます。

+0

JSON形式をメモ帳に変換できれば –

+0

のメモ帳でJSON形式を使用できますか? –

+0

JSONはデータを書式設定する特別な方法です。これは通常のテキストで構成され、メモ帳++やMicrosoftのメモ帳などの任意のエディターで書かれ、読み込むことができます。 (データファイルの最後に '.json'を使用する必要はありません。また、' data.txt'と呼ぶこともできます) – BurningKarl

関連する問題