2016-11-12 21 views
0

2hと同じように「単純な」作業を行っていますが、解決策が見つからないので、質問はどこですか。 検索したいファイルを1行ずつ検索し、結果が見つからない場合は最後に何かを出力し、そうでなければ関数を呼び出します。ので、ここでファイルを1行ずつ読み込み、完了した後にのみ印刷します

def DeletItemCheckUp(): 
    import re 
    find = True 
    itemNumber = input("\n what is the item you want to delet : ") 
    fileItem = open('Data_Item', 'r', encoding='Utf-8') 
    for line in fileItem: 
     sr = re.search(r'^\b%s\b'%itemNumber,(line.split(';')[0])) 
     if (sr == None): 
      pass 
    print("This item don't exist.") 
    fileItem.close() 
    if (find == True): 
     return itemNumber 
     DeletItem() 

は、私は別の試みで持っている問題は、次のとおりです。 1.印刷「このアイテムは存在しません。」私のitemNumberを持たないすべての行について 2.実際に一致するものが見つからなかった場合、DeletItem()は呼び出されませんでした。

オブジェクトコード: アイテムを削除するように依頼し、固有のアイテム番号が存在する場合はファイルをチェックインし、そうであればDeletItem()を呼び出して削除します。そうでなければ、このユニークアイテム番号ドン存在しない。

答えて

0

あなたが尋ねたことを達成するためにそこにはいくつかの見落としがあります。我々は何かを見つけた時を知るためにフラグ(true/false)を使い、それに基づいて関数を呼び出すか、数値を出力するか/返すかを決定します。

def DeletItemCheckUp(): 
    import re 
    find = False  # initialize to False 
    itemNumber = input("\n what is the item you want to delet : ") 
    fileItem = open('Data_Item', 'r', encoding='Utf-8') 
    for line in fileItem: 
     sr = re.search(r'^\b%s\b'%itemNumber,(line.split(';')[0])) 
     if (sr == None): 
      continue # do nothing and continue 
     else: 
      # we found the number, set the flag and break 
      find = True 
      break # no need to continue searching 
    fileItem.close() 
    if (find): 
     DeletItem()   # call the function 
    else: 
     print("This item don't exist.") 
+0

それは完璧に働く、私はそれを行う方法を見つけることを試みるより多くの時間を保存してくれてありがとう! =) – MaxyArthes

0

1)パスをあなたのプリントに置き換えます( 'このアイテムは存在しません')。 「合格」とは「何もしない」を意味します。

2)あなたのDeleteItem()は、の返品後にです。関数が呼び出された場所に戻るため、戻り後に何も実行されません。あなたがほしい

else: 
    DeleteItem() 
関連する問題