イントロ コンプ サイエンス クラスの最終日には、辞書を作成する必要がありました。私たちの本の宿題プログラムは、一連の名前と電子メール アドレスを検索、追加、変更、および削除できるものを作成するように求めています。ディクショナリをピクルするように求められますが、私にとってキッカーは、プログラムが起動するたびに、ファイルからディクショナリを取得してピクルを解除する必要があることです。自分を窮地に陥れたかどうかはわかりませんが、これまでに行ったことでこれを行う方法がわかりません。
私のコード:
import mMyUtils
import pickle
LOOK_UP = 1
ADD = 2
CHANGE = 3
DELETE = 4
QUIT = 5
def main():
emails = {}
choice = 0
while choice != QUIT:
choice = getMenuChoice()
if choice == LOOK_UP:
lookUp(emails)
elif choice == ADD:
add(emails)
elif choice == CHANGE:
change(emails)
elif choice == DELETE:
delete(emails)
else:
exit
def getMenuChoice():
print()
print('Name and Email Address Catalog')
print('------------------------------')
print('1. Look up an email address')
print('2. Add a new email address')
print('3. Change an email address')
print('4. Delete an email address')
print('5. Quit the program')
print()
choice = int(input('Enter the choice: '))
while choice < LOOK_UP or choice > QUIT:
choice = int(input('Enter a valid choice: '))
return choice
def lookUp(emails):
name = input('Enter a name: ')
print(emails.get(name, 'Not found.'))
def add(emails):
name = input('Enter a name: ')
address = input('Enter an email address: ')
if name not in emails:
emails[name] = address
pickle.dump(emails, open("emails.dat", "wb"))
else:
print('That entry already exists.')
def change(emails):
name = input('Enter a name: ')
if name in emails:
address = input('Enter the new address: ')
emails[name] = address
pickle.dump(emails, open("emails.dat", "wb"))
else:
print('That name is not found.')
def delete(emails):
name = input('Enter a name: ')
if name in emails:
del emails[name]
else:
print('That name is not found.')
main()
メール変数を何らかの形式の pickle.load に設定する必要があることはわかっていますが、一生それを理解することはできません。mMyUtils は、try/except ロジック用に作成したライブラリです。新しいものが機能するようになったら、それを入れます。