Форум сайта python.su
0
Здравствуйте.
Задали следующие задание:Написать программу, которая при каждом нажатии enter выдаёт по 20 строк из текстового файла. Проблема в том, что я не знаю, как сделать это. Программа выдаёт весь текст без остановки.
Заранее спасибо.
Офлайн
0
ну можно считывать все в список и делать срез по 20 элементов. Вы наверно написали как-нибудь так:
for sttr1 in f:
print str
Офлайн
0
или через while
Офлайн
0
Неа.. у меня там ещё и while есть)
а можно по подробнее?
UPD: Вот. А как мне настроить c while?
Надо ведь что-то приписать while bla bla:
Отредактировано (Сен. 29, 2010 20:44:25)
Офлайн
0
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)
Офлайн
0
Не взыщите, решение может и не гуд, кратко поясню:
открываем файлик
устанавливаем переменную счетчик в 1
пробегаем наш файл циклом for проверяя на каждой итерации счетчик, если равно 20 спрашиваем пользователя, если нажат enter или любой другой символ кроме q бежим дальше
Офлайн
0
Хорошо, но в любом случае, программа не совсем работает так как нужно. Строк выдаёт больше чем нужно, да и после нажатия enter выдаёт ошибку.
Можете мне конкретно/наглядно разъяснить, что такое while и for i in range, и может я сама найду решение. Скажу честно, учитель ограничился объяснениями, а примеры слишком примитивны, что бы их хоть както использовать при задачах задаваемых на дом. Мне нужен принцип. Буду очень благодарна
Офлайн
0
ну смотрите что такое цикл for? Если у нас есть какой нибудь объект-последовательность имеется в программе то цикл for последовательно пройдет по каждому элементу в них. Объект последовательность это например: списки, кортежи и прочее.
А функция range выдает нам как раз список из значений от значения start c шагом step,и до значения stop
например:
i=range(1,2,20)
for val in i:
print val
Отредактировано (Сен. 29, 2010 21:28:29)
Офлайн
0
Цикл while работает так:
1. Проверить условие записанное после while
2 Если оно истинно, то выполнить тело цикла(то что после двоеточия)
3. Опять перейти к шагу 1
Поэтому очень важно чтобы в цикле while были действия приводящие к изменениям в переменной по которой проверяются условия. Например распечатаем список четных чисел до 20:
i=0
while i<=20:
i=i+2
print (i)
print ('all')
Отредактировано (Сен. 29, 2010 21:33:37)
Офлайн
0
Возможно так будет понятнее:
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()Офлайн