Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2010 23:45:46

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос

Здравствуйте.
У меня следующия такая проблемка.
Вообщем, есть файл, с цитатами. Надо их по строкам распределить в список?(list) И потом выдавать случайно по одной цитате.

file=open("quotes.txt", "r")

a=[]
for line in file:
a.append(line)
from random import*
d=randint(1,len(a))
print d
Проблема в том, что мне выдаёт цифры в место строк. Я даже понимаю почему, но как написать иначе не знаю. К учителю обращаться не хочу, я его задол… надоела ему вообщем)



Офлайн

#2 Окт. 7, 2010 23:59:21

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Вопрос

import random
text = open("quotes.txt", "r").read().split('\n')
print random.choice(text)



Офлайн

#3 Окт. 8, 2010 00:11:24

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос

Хорошо работает, но учитель видел мою изначальную работу и знает, что бы я не дошла бы до таких выводов. Можно как нибудь по проще, по длиннее расписать?



Офлайн

#4 Окт. 8, 2010 00:12:27

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос

Не то, что бы я просто хочу скопировать и показать учителю. Мне просто надо понять и вслучае объяснить, а тут я не совсем всё понимаю.



Офлайн

#5 Окт. 8, 2010 00:56:51

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Вопрос

import random 
file = open("quotes.txt", "r") # отрываем файл
alltext = file.read() # читаем из него весь текст
spisok = alltext.split('\n') # разбиваем текст в список по символу "конец строки"
citata = random.choice(spisok) # выбираем из списка случайный элемент
print citata
понятнее ? :)



Офлайн

#6 Окт. 8, 2010 02:34:14

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Вопрос

Murderdoll666
учитель видел мою изначальную работу и знает, что бы я не дошла бы до таких выводов
не поверит, что Вы заглянули в справку по питону?
у объекта file есть метод readlines, который возвращает список строк, а дальше Вы уже сами все сделали :). Ваше d это индекс строки в массиве строк, т.е. Вам нужно писать не print(d), а print(spisok)



Офлайн

#7 Окт. 8, 2010 12:37:43

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос

pyuser
Murderdoll666
учитель видел мою изначальную работу и знает, что бы я не дошла бы до таких выводов
не поверит, что Вы заглянули в справку по питону?
у объекта file есть метод readlines, который возвращает список строк, а дальше Вы уже сами все сделали :). Ваше d это индекс строки в массиве строк, т.е. Вам нужно писать не print(d), а print(spisok)
Да не то что бы зашла, просто тот изначальный вариант был ну уж слишком для меня. А написать свою программу опираясь на то решение у меня не получилось.
за совет большое спасибо, мой изначальный код теперь работает как надо)))
sp3, и Вам спасибо



Офлайн

#8 Окт. 9, 2010 22:56:47

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Вопрос

по-моему тут напрашивается использование readlines вместо read и split.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version