Форум сайта python.su
суть такая: хочу сделать себе рандомизатор книг, чтобы не выбирать их самостоятельно. Я сделала отдельно текстовый файл со списком книг, где строчка - это “название. автор”. пример прикреплен.
пайтон на этот мой “шедевр” реагирует включением и мгновенным выключением.. где и насколько сильно я накосячила?
вот что у меня вышло:
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)
Прикреплённый файлы: book_titles1.txt (174 байта)
Офлайн
вот самое простое решение
для больших файлов работать не будет
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:]))
Офлайн
terabayt
вот самое простое решениедля больших файлов работать не будет
Офлайн
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
Отредактировано terabayt (Июль 1, 2016 17:34:59)
Офлайн