2017-01-07 7 views
-4

私は電話帳の作成に関する宿題があります。そして私はコードをしました。str.replaceを使用すると、私はTypeErrorを返します。 'str'オブジェクトは整数として解釈できません。

import sys 
print("Type 'help' to learn commands ") 
command = ("show_list, add_person, delete_person, search_person, exit") 

command1 =() 
list1 = {} 

while True: 
command1 = input("Command: ") 
saved = open("PhoneBook.txt", "a") 

if command1 == "help": 
    print(command) 
    print() 

elif command1 == "show_list": 
    saved = open("PhoneBook.txt", "r") 
    print(saved.read()) 
    saved.close() 

elif command1 == "add_person": 
    name = str(input("Name: ")) 
    number = int(input("Number: ")) 
    list1[name] = number 
    saved = open("PhoneBook.txt", "w") 
    saved.write("\n-------------") 
    saved.write(str(name)) 
    saved.write(":") 
    saved.write(str(number)) 
    saved.write("-------------\n") 
    saved.close() 

elif command1 == "search_person": 
    search = open("PhoneBook.txt", "r") 
    search1 = input("Name:") 
    for line in search: 
     if search1 in line: 
      print("\n") 
      print(search) 

elif command1 == "delete_person": 
    del0 = open("PhoneBook.txt", "r+") 
    del1 = str(input("Name: ")) 
    for line in del0: 
     if del1 in line: 
      del2 = line.replace(" ", " ", " ") 
      del0.write(silinecek3) 
      del0.close() 

elif command1 == "exit": 
    sys.exit()` 

名前を削除する以外はすべてが良いと思います(私は思う)。名前を削除しようとすると、出力されます:

Traceback (most recent call last): 
    File "C:/Users/oyuni/Desktop/ödeving.py", line 47, in <module> 
    del2 = line.replace(" ", " ", " ") 
TypeError: 'str' object cannot be interpreted as an integer 

そして私は何をすべきかわかりません。コードを修正するのに手伝ってくれる人はいますか?

+1

'line.replace(" "、" "、" ")'は何をしますか? 'replace'の3番目の引数は' int'でなければなりません。 – DeepSpace

答えて

1

str.replace()は2つまたは3つの引数を取ることができますが、3番目の引数でなければなりません(置き換えの回数が制限されます)。

あなたは三番目の引数として文字列で渡さ:ちょうど2つの文字列で

line.replace(" ", " ", " ") 

パス、そしてあなたが実際に何かを交換したい場合は、これらの異なる文字列を作る:

line.replace(" ", "") 

しかし、これを名前を削除しません。コードのそのブロックの残りの部分はあなたに多くの問題を与えるために起こっている:

  • あなたが安全に読むと同時に、同じファイルに書き込むことはできません名前silinecek3
  • を定義していませんでした。すべてのファイルを最初にメモリに読み込んだり、新しいファイルに書き込んだりして元に戻したりします。
  • 名前を完全に削除する必要があります。あなたが保持しているすべての名前を書き出してください(行をフィルターに掛けて、名前を持たない名前を書きます)。
関連する問題