Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2016 15:32:23

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

Проверьте, пожалуйста, что не так?

суть такая: хочу сделать себе рандомизатор книг, чтобы не выбирать их самостоятельно. Я сделала отдельно текстовый файл со списком книг, где строчка - это “название. автор”. пример прикреплен.

пайтон на этот мой “шедевр” реагирует включением и мгновенным выключением.. где и насколько сильно я накосячила?

вот что у меня вышло:


import random “”“ импортирую рандом ”“”

sorting(): “”“ функция наполнения списка и его сортировки ”“”
booktitles = open(“book_titles.txt”, “w”) “”“ должен открываться мой файл с названиями, я его не читаю, а редактирую, поэтому ”w“ ”“”
listofbooks = “”“ создаю список, куда разрезанные из файла строчки должны складываться. или его нужно вывести выше функции? ”“”
for line in booktitles: “”“ делаю цикл ”разрезки“ ”“”
line = line.rstrip() “”“ убираю пробел с конца строки, который появляется по умолчанию ”“”
listofbooks.append(line) “”“ добавляю обрезанную строчку-название в список ”“”

sortedlist = listofbooks.sort() “”“ сортирую по алфавиту ”“”
print sortedlist “”“ хотела для первого раза вывести на экран, что получилось, чтобы посмотреть, правильно ли все отрезалось и отсортировалось ”“”

choosing(): “”“ функция рандомного выбора ”“”
sorting() “”“ вызываю функцию сортировки ”“”
print “________________________________________________” “”“ чтобы зрительно разделить место ”“”

print “You should try:”
thebook = random.choice(sortedlist)
print thebook
decision = raw_input(“Would you?”) “”“ задумывалось как способ вычеркивания выбранной книжки из списка (а вообще и их текстового файла тоже) ”“”
if decision = “yes”:
sortedlist.remove(thebook)
exit()
else:
continue

hello = raw_input(“let's get it started?”) “”“ и здесь я вызываю функцию выбора, которая вызывает функцию сортировки ”“”
if hello = “yes”:
choosing()


Спасибо за помощь.

Отредактировано tawarwaith (Июль 1, 2016 15:38:01)

Прикреплённый файлы:
attachment book_titles1.txt (174 байта)

Офлайн

#2 Июль 1, 2016 15:53:29

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проверьте, пожалуйста, что не так?

вот самое простое решение
для больших файлов работать не будет

import random
if raw_input("let's get it started?") == "yes":
    with open('book_titles1.txt') as f:
        l = f.readlines()
    c = random.randint(0, len(l) - 1)
    print l[c].strip()
    if raw_input("Would you?") == "yes":
        with open('book_titles1.txt', 'w') as f:
            f.write(''.join(l[:c] + l[c + 1:]))



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Июль 1, 2016 16:33:00

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

Проверьте, пожалуйста, что не так?

terabayt
вот самое простое решениедля больших файлов работать не будет

terabayt, спасибо! у меня действительно пока проблема с громоздкостью.

я поняла все, кроме последней строчки и она делает не совсем то, что нужно: нужно, чтобы строчка удалялась из файла текста, если “да”, а если любое другое значение, то процесс запускался заново: предлагалось бы новое название книжки..

а еще у меня “бьется” русский: ╧ю эряЁртыхэш■ ъ ╤трэє. ╠. ╧ЁєёЄ

как-то же через p = u'парпрдардпорао' можно, вроде, выводить все в русской раскладке, чтобы не билось, но этот случай - с линиями (string), а не со списками..

Офлайн

#4 Июль 1, 2016 17:34:43

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проверьте, пожалуйста, что не так?

import random
while True:
    if raw_input("let's get it started?") == "yes":
        with open('book_titles1.txt') as f:
            l = f.readlines()
        c = random.randint(0, len(l) - 1)
        print l[c].strip()
        if raw_input("Would you?") == "yes":
            with open('book_titles1.txt', 'w') as f:
                f.write(''.join(l[:c] + l[c + 1:]))
    else:
        break

нужно пересохранить файл с названиями книг в кодировке utf-8
я так и сделал когда тестировал с помощью sublime text -> file -> save with encoding



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Июль 1, 2016 17:34:59)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version