Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2010 20:29:14

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

Проблема с задачей

Здравствуйте.
Задали следующие задание:Написать программу, которая при каждом нажатии enter выдаёт по 20 строк из текстового файла. Проблема в том, что я не знаю, как сделать это. Программа выдаёт весь текст без остановки.
Заранее спасибо.



Офлайн

#2 Сен. 29, 2010 20:39:00

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

ну можно считывать все в список и делать срез по 20 элементов. Вы наверно написали как-нибудь так:
for sttr1 in f:
print str



Офлайн

#3 Сен. 29, 2010 20:41:13

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

или через while



Офлайн

#4 Сен. 29, 2010 20:41:34

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

Проблема с задачей

Неа.. у меня там ещё и while есть)
а можно по подробнее?

UPD: Вот. А как мне настроить c while?
Надо ведь что-то приписать while bla bla:



Отредактировано (Сен. 29, 2010 20:44:25)

Офлайн

#5 Сен. 29, 2010 20:51:49

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

f=open('test.txt','r')
i=1
for t in f:
if i<=20:
print(i)
print( t)
i+=1
else:
c=input('q for exit')
if c=='q':
f.close()
break
else:
i=1
print (i)
print (t)
i+=1



Отредактировано (Сен. 29, 2010 21:10:40)

Офлайн

#6 Сен. 29, 2010 20:55:47

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

Не взыщите, решение может и не гуд, кратко поясню:
открываем файлик
устанавливаем переменную счетчик в 1
пробегаем наш файл циклом for проверяя на каждой итерации счетчик, если равно 20 спрашиваем пользователя, если нажат enter или любой другой символ кроме q бежим дальше



Офлайн

#7 Сен. 29, 2010 21:07:20

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

Проблема с задачей

Хорошо, но в любом случае, программа не совсем работает так как нужно. Строк выдаёт больше чем нужно, да и после нажатия enter выдаёт ошибку.
Можете мне конкретно/наглядно разъяснить, что такое while и for i in range, и может я сама найду решение. Скажу честно, учитель ограничился объяснениями, а примеры слишком примитивны, что бы их хоть както использовать при задачах задаваемых на дом. Мне нужен принцип. Буду очень благодарна



Офлайн

#8 Сен. 29, 2010 21:19:20

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

ну смотрите что такое цикл for? Если у нас есть какой нибудь объект-последовательность имеется в программе то цикл for последовательно пройдет по каждому элементу в них. Объект последовательность это например: списки, кортежи и прочее.
А функция range выдает нам как раз список из значений от значения start c шагом step,и до значения stop
например:

i=range(1,2,20)
for val in i:
print val
а конструкция for i in … говорит нам идти по объекту пока не пройдем все элементы



Отредактировано (Сен. 29, 2010 21:28:29)

Офлайн

#9 Сен. 29, 2010 21:27:05

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

Цикл while работает так:
1. Проверить условие записанное после while
2 Если оно истинно, то выполнить тело цикла(то что после двоеточия)
3. Опять перейти к шагу 1
Поэтому очень важно чтобы в цикле while были действия приводящие к изменениям в переменной по которой проверяются условия. Например распечатаем список четных чисел до 20:

i=0 
while i<=20:
i=i+2
print (i)
print ('all')
Мы прибавляем все время 2 к i, и цикл остановится как только i станет больше 20
Файл можно читать построчно метод read файлового объекта, который возвращает нам функция open. И есть такая функция EOF которая смотрит не наступил ли конец файла, если нет то возвращает False, а если конец файла то True. Цикл While вполне себе может использовать ее как условие.



Отредактировано (Сен. 29, 2010 21:33:37)

Офлайн

#10 Сен. 29, 2010 22:32:19

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с задачей

Возможно так будет понятнее:

f = open('test.txt','r')
while not f.closed:
if not raw_input('Press Enter to read next 20 lines or type any char to exit: '):
for i in xrange(20):
line = f.readline()
if line:
print line
else:
f.close()
break
else:
f.close()



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version