Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 3, 2016 22:30:55

Morronel
Зарегистрирован: 2016-01-03
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно реализовать проверку никнейма

Привет форумчане! Я начал учить питон пару недель назад, до этого пинал пяткой джаву и паскаль. Уткнулся в нерешаемую проблему при реализации практической задачи.

Дело вот какое - есть программа. Она делает всякую хрень. При каждом исполнении программы она записывает один никнейм, и добавляет его в файл nickbase.txt. Сейчас там уже под 200 никнеймов скопилось, они записаны через одну строчку (\r\n). Теперь надо добавить проверку никнейма. То есть в начале работы программа принимает никнейм с консоли, а потом нужно чтобы она сравнила его со всеми никами в nickbase.txt и если обнаружится совпадение то программа должна это как-то обозначить (это уже легко). Условным оператором я знаю как пользоваться, не могу никак выстроить нужный цикл. Надеюсь что вопрос легкий и кто-то подскажет, заранее спасибо.

Офлайн

#2 Янв. 3, 2016 22:48:13

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Нужно реализовать проверку никнейма

for nickname in open('nickbase.txt'):
    if nickname == nickname_console:
        pass # произвести те действия, что нужно
Конец строк и пустые строки уж сами убирайте

Офлайн

#3 Янв. 3, 2016 23:17:33

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Нужно реализовать проверку никнейма

Morronel
Она делает всякую хрень.
Если это ваша программа делает хрень выкиньте на помойку ‘nickbase.txt’. Замените его пиклом.
import cPickle
import os
# типа чтение базы
if os.path.exists("a.pkl")
    with open("a.pkl","rb") as f:
        a=cPickle.load(f)
else:
    a=set()
....
some_nick="kuku"
if some_nick in a:
    ....
else:
    ....
# типа запись базы после изменений
with open("a.pkl","wb") as f:
    cPickle.dump(a,f)

При этом чтение и запись делаются одной командой (исключая открытие файла). Кросплатформенно. Хранилище приспособлено для проверки наличия ника. Если ников будут миллионы, то будет заметно что этот подход быстрее.

Morronel
не могу никак выстроить нужный цикл
С этим не помогу. Цикл тут вообще не нужен.

p.s.
вообще обычно хранят пары ник - хеш пароля и прочие конфигурационные данные. Код чтения и записи при этом не изменятся.
  a=dict()
  a["вася"]={"passw_hash":123,"cfg":"file1"}
 



Отредактировано doza_and (Янв. 4, 2016 15:08:28)

Офлайн

#4 Янв. 4, 2016 11:51:36

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Нужно реализовать проверку никнейма

doza_and
Я не задавал вопрос, я пытался помочь.

Офлайн

#5 Янв. 4, 2016 15:08:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Нужно реализовать проверку никнейма

Romissevd
Я не задавал вопрос,
Извините поправил.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version