Форум сайта python.su
Спасибо, но мне нужно на Python3.3
Офлайн
Спасибо, но мне нужно на Python3.3
Офлайн
версия для 3 питона, с небольшим изменением
import re row = 50 page = row * 40 choice = 'yes' textfile = open('text.txt', 'r') text = textfile.read() textfile.close() pages = (len(text)-1)//page + 1 print ('Text contains %d pages' %pages) while choice == 'yes': fortune_telling = input('Enter page number, row number and word number separated by commas: ') input_list = fortune_telling.split(',') numbers = [int(x.strip()) for x in input_list] required_page = text[page*(numbers[0]-1):page*numbers[0]] required_row = required_page[row*(numbers[1]-1):row*numbers[1]] #you can add any additional separator to re.split required_words = re.split(r'[ ,]', required_row) for word in required_words: if word == '': required_words.remove(word) print ('That magic word - %s' %required_words[numbers[2]-1]) choice = input('Do you want to repeat? yes or no: ')
Отредактировано TroSer (Янв. 16, 2014 10:39:36)
Офлайн
TroSer
ошибка во первых в том что в 3 питоне / дает float, во вторых зачем там делать -1 мне не ясно,в третьих, например длина текста 4000, в таком случае в вашем коде страниц будет 3, хотя их должно быть две.
Я в таком случае решаю проблему следующим образом:
pages = (len(text))//page + bool(len(text)%page)
Офлайн
JOHN_16ой да, я затупил, в третьем питоне там float, а если длина 4000, то минус один не дает считать страницу с пустым символом (4000-1) // 2000 + 1 == 2?
например длина текста 4000, в таком случае в вашем коде страниц будет 3
Отредактировано TroSer (Янв. 16, 2014 08:52:03)
Офлайн