2013-11-10 3 views
1
import pickle 
import os 
import time 

class Person(): 
    def __init__(self, number, address): 
     self.number = number 
     self.address = address 


def save(): 
    with open('mydict.pickle', 'wb') as f: 
     pickle.dump(mydict, f)   

mydict = {} 
mydict['Avi'] = ['347-000-0000', 'Oceanview'] 
mydict['Alan'] = ['347-000-0000', 'Brighton'] 
mydict['Frank'] = ['718-000-0000', 'Brighton'] 

print('add a name to the database.') 
name = input('Name:') 
number = input('Digits:') 
address = input('Address:') 
mydict[name] = [number, address] 

------------------------------------------------------- 

ОШИБКА: Если я попытаюсь добавить имя в базу данных, я получаю имяerror. NameError: имя 'alan' не определено. Странно, что строки не будут работать, но цифры будут. Извините, если мой вопрос неясен.Получение ошибки имени при попытке ввода строки

Traceback (most recent call last): 
    File "C:/Python33/ss", line 21, in <module> 
    name = input('Name:') 
    File "<string>", line 1, in <module> 
NameError: name 'alan' is not defined 
>>> 
+0

Да, я просто сделал. – user2975703

+0

python 2.7 или 3? – samrap

ответ

4

Похоже, вы используете Python 2.x.

Используйте raw_input вместо input, чтобы получить строку от пользователя.

Если вы читаете книгу/материал, предполагающий, что читатель использует Python 3.x, лучше использовать Python 3.x вместо Python 2.x.

BTW, словарные ключи чувствительны к регистру.

>>> d = {'Avi': 1, 'Alan': 2} 
>>> d['alan'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'alan' 
>>> d['Alan'] 
2 
+0

Ahh. Благодарю. По какой-то причине оболочка python 2.7 открывалась вместо оболочки 3.3. У меня оба установлены. Спасибо, что поняли! – user2975703

+0

@ user2975703, Если это было полезно, [** принять ответ **] (http://meta.stackexchange.com/a/5235). – falsetru

Смежные вопросы