Найти - Пользователи
Полная версия: Проблема с задачей
Начало » Python для новичков » Проблема с задачей
1 2
Murderdoll666
Здравствуйте.
Задали следующие задание:Написать программу, которая при каждом нажатии enter выдаёт по 20 строк из текстового файла. Проблема в том, что я не знаю, как сделать это. Программа выдаёт весь текст без остановки.
Заранее спасибо.
guranvir
ну можно считывать все в список и делать срез по 20 элементов. Вы наверно написали как-нибудь так:
for sttr1 in f:
print str
guranvir
или через while
Murderdoll666
Неа.. у меня там ещё и while есть)
а можно по подробнее?

UPD: Вот. А как мне настроить c while?
Надо ведь что-то приписать while bla bla:
guranvir
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
guranvir
Не взыщите, решение может и не гуд, кратко поясню:
открываем файлик
устанавливаем переменную счетчик в 1
пробегаем наш файл циклом for проверяя на каждой итерации счетчик, если равно 20 спрашиваем пользователя, если нажат enter или любой другой символ кроме q бежим дальше
Murderdoll666
Хорошо, но в любом случае, программа не совсем работает так как нужно. Строк выдаёт больше чем нужно, да и после нажатия enter выдаёт ошибку.
Можете мне конкретно/наглядно разъяснить, что такое while и for i in range, и может я сама найду решение. Скажу честно, учитель ограничился объяснениями, а примеры слишком примитивны, что бы их хоть както использовать при задачах задаваемых на дом. Мне нужен принцип. Буду очень благодарна
guranvir
ну смотрите что такое цикл for? Если у нас есть какой нибудь объект-последовательность имеется в программе то цикл for последовательно пройдет по каждому элементу в них. Объект последовательность это например: списки, кортежи и прочее.
А функция range выдает нам как раз список из значений от значения start c шагом step,и до значения stop
например:
i=range(1,2,20)
for val in i:
print val
а конструкция for i in … говорит нам идти по объекту пока не пройдем все элементы
guranvir
Цикл 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 вполне себе может использовать ее как условие.
Vader
Возможно так будет понятнее:
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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB