Нахождение количества символов в i-м предложении данного текстового файла с использованием Python - PullRequest
0 голосов
/ 08 июня 2011

При запуске курсор просто мигает в командной строке слева и ничего не происходит.Может кто-нибудь сказать мне, почему он не делает то, что ожидается?

Спасибо в ожидании.

Код выглядит следующим образом:

import sys


i=3   
try:
    text = open(sys.argv[1], 'r')

except IOError:
  print 'Cannot open file %s for reading' % filename

  sys.exit(0)



char = text.read (1)

#navigate to ith sentence, i.e. go to the first letter of the ith sentence

j = 0
for j in range (0, i-1):
    char = text.read (1)
    if char == '.':
        j = j+1

char = text.read(2) #Assuming there is a spce after full-stop/!/?

#count the number of characters in the present sentence

chars = 0

while char != '.' or '!' or '?':
    char = text.read (1)
    chars = chars + 1


print chars

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Я вижу одну проблему:

while char != '.' or '!' or '?':

Должно быть:

while char != '.' and char != '!' and char != '?':

... или хотя бы что-то логически эквивалентное, но чище и вкуснее.В первом случае Python будет пытаться вычислить char != '.', а затем вычислить '!' и вычислить '?', оба считают true (потому что они не равны нулю).Так что цикл продолжается вечно!

Что касается:

j = 0
for j in range (0, i-1):
    char = text.read (1)
    if char == '.':
        j = j+1

Я не думаю, что это делает то, что вы намерены сделать.Предполагая, что текстовый файл похож на «Это предложение.Это другое предложение. ', Этот цикл установит char в' i ', а j в 1. Возможно, вы намеревались использовать цикл while, как я описал выше, вместо одного оператора if.

0 голосов
/ 08 июня 2011

Когда вы доберетесь до конца файла, read (1) будет просто возвращать пустую строку каждый раз

    Help on built-in function read:

    read(...)
        read([size]) -> read at most size bytes, returned as a string.

        If the size argument is negative or omitted, read until EOF is reached.
        Notice that when in non-blocking mode, less data than what was requested
        may be returned, even if no size parameter was given.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...