2017-02-16 13 views
1

基本的には、ID番号を入力して同じ番号で再度入力すると、エラーが表示されるシステムを作りたいと思っています。私はいくつかのソリューションをオンラインで探すことを試みましたが、実際に動作するソリューションを見つけることはできませんでした。これまでに行ったコードです:ファイル内の重複を見つける方法

import sys 
N = 0 
while N < 2: 
    ID = input("Please input ID code ") 
    if (len(ID)) == 6: 
     with open('ID1.txt', 'a') as file: 
      file.write(ID + ' ') 
      file.write('\n') 
     N += 1 
     print("ID length: Valid") 
    else: 
     print("ID Code: Error") 
     sys.exit() 

どのようにすればいいですか?

N = 1 
while N <= 2: 
    input_id = input('Type your ID: ') 

    assert input_id == 6, 'Invalid ID length' 

    with open('IDs.txt', 'r+') as ids: 
     id_list = ids.read().split('\n') 
     if input_id in id_list: 
      print('This ID already exists') 
      N += 1 
      continue 
     else: 
      ids.write('\n'+input_id) 
      print('valid ID') 
      break 

しかしクリーナー:

+1

すでに使用されているIDを保存する必要があります。例えば、リスト内にある。次に、それがすでにリストに入っているかどうかを確認します。 – pawelty

+0

IDが2回目に入力されたとき、つまり最初に入力されたIDが入力されたとき、または入力されたIDがすでにファイルに含まれているときに、エラーをスローしたいとしますか? – Lex

+0

セットを使用してIDを格納できます。 IDの数が少ない場合は、アクセスの時間に大きな違いはありませんが、数百万のIDがあるとします。セットはより速くなります –

答えて

0

最も簡単な方法は、あなたのコードでは、IDがこの新しいリストにあるかどうかを見て、改行によって分割することによって、そのIDの中にそれを分割し、テキストファイルをロードすることです方法はJSONファイルを使用してそれを行うことです。このように、あなたは直接のリストを読み込むことができ、そうでない場合、IDは、ファイル内に存在する場合、コードの下

import json 

N = 1 
while N <= 2: 
    file = open('IDs.json', 'r') 
    ids = json.load(file) 
    file.close() 

    input_id= input('enter your ID:') 
    assert input_id == 6, 'Invalid ID length' 

    if int(input_id) in ids: 
     print('This ID already exists') 
     N += 1 
     continue 
    else: 
     ids.append(int(input_id)) 
     json.dumps('IDs.json', ids) 
     print('ID accepted') 
     break 
0

を確認するフォーマットエラーの少ないチャンス、ファイル

N = 0 
while N < 2: 
    ID = raw_input("Please input ID code ") 
    if (len(ID)) == 6: 
     with open('ID1.txt', 'a+') as f: 
      if not any(ID == x.rstrip('\r\n') for x in f): 
       f.write(ID + '\n') 
       N += 1 
に2つのユニークなIDを入力するがあるだろう
関連する問題