Почему я получаю синтаксическую ошибку для моего оператора elif? - PullRequest
0 голосов
/ 21 марта 2019

Ниже приведена копия моего кода. Я продолжаю получать синтаксическую ошибку для elif centralLat и centralLong. Я не понимаю почему. Я правильно все отступил. Первый, если EasternLat и EasternLong работает. Почему не работают операторы elif для centralLong, centralLat и т. Д.?

Для этого задания я должен проверить каждую широту и долготу для определенного часового пояса и рассчитать показатель счастья для часового пояса. Этот показатель счастья представляет собой сумму значений чувств твитов в часовом поясе, деленную на количество твитов в часовом поясе.

Почему я получаю сообщение об ошибке?

for line in infile2:
        line=line.rstrip()
        words=line.split()
        firststriplat=words[0].rstrip(",")
        lat=firststriplat.lstrip("[")
        lat=float(lat)
        long=words[1].rstrip("]")
        long=float(long)
        easternLat= 24.660845 <= lat and lat<=49.189787
        easternLong= -87.518395 <= long <= -67.444574
        centralLat= 24.660845 <= lat and lat<=49.189787
        centralLong= -101.998892 <= long <= -87.518395
        mountainLat=24.660845 <= lat and lat<=49.189787
        mountainLong=-115.236428 <= long <= -101.998892
        pacificLat=24.660845 <= lat and lat<=49.189787
        pacificLong= -125.242264<= long <= -115.236428
        if easternLat and easternLong:
            for word in words:
                if word in depressed:
                    depressedKeys=depressedKeys+1
                elif word in okay:
                    okayKeys=okayKeys+1
                elif word in good:
                    goodKeys=goodKeys+1
                elif word in happy:
                    happyKeys=happyKeys+1
                else:
                    pass
        numOfTweetsEastern=numOfTweetsEastern+1
        sentimentValueEastern=(depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE)+(goodKeys*GOODVALUE)+(happyKeys*HAPPYVALUE)
        elif centralLat and centralLong:
            for word in words:
                if word in depressed:
                    depressedKeys=depressedKeys+1
                elif word in okay:
                    okayKeys=okayKeys+1
                elif word in good:
                    goodKeys=goodKeys+1
                elif word in happy:
                    happyKeys=happyKeys+1
                else:
                    pass
        numOfTweetsCentral=numOfTweetsCentral+1
        sentimentValueCentral=(depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE)+(goodKeys*GOODVALUE)+(happyKeys*HAPPYVALUE)
        elif mountainLat and mountainLong:
             for word in words:
                if word in depressed:
                    depressedKeys=depressedKeys+1
                elif word in okay:
                    okayKeys=okayKeys+1
                elif word in good:
                    goodKeys=goodKeys+1
                elif word in happy:
                    happyKeys=happyKeys+1
                else:
                    pass
        numOfTweetsMountain=numOfTweetsMountain+1
        sentimentValueMountain=(depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE)+(goodKeys*GOODVALUE)+(happyKeys*HAPPYVALUE)
        elif pacificLat and pacificLong:
            for word in words:
                if word in depressed:
                    depressedKeys=depressedKeys+1
                elif word in okay:
                    okayKeys=okayKeys+1
                elif word in good:
                    goodKeys=goodKeys+1
                elif word in happy:
                    happyKeys=happyKeys+1
                else:
                    pass
        numOfTweetsPacific=numOfTweetsPacific+1
        sentimentValuePacific=(depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE)+(goodKeys*GOODVALUE)+(happyKeys*HAPPYVALUE)
        else:
            pass
    happScoreEastern=sentimentValueEastern/numOfTweetsEastern
    happScoreCentral=sentimentValueCentral/numOfTweetsCentral
    happScoreMountain=sentimentValueMountain/numOfTweetsMountain
    happScorePacific=sentimentValuePacific/numOfTweetsPacific
    print(happScoreEastern)
    print(happScoreCentral)
    print(happScoreMountain)
    print(happScorePacific)

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Давайте возьмем одну небольшую часть вашего кода.

1    if easternLat and easternLong:
2        for word in words:
3            ...
4    numOfTweetsEastern=numOfTweetsEastern+1
5    sentimentValueEastern=(depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE)+(goodKeys*GOODVALUE)+(happyKeys*HAPPYVALUE)
6    elif centralLat and centralLong:
7        for word in words:
8            ...

Это один оператор if (строка 1), который содержит цикл for (2).
Затем после оператор if состоит из двух строк (4 и 5).
Затем есть оператор elif (6).

Эти строки (4 и 5) предотвращают elifот соединения с if.

Если эти строки (4 и 5) должны быть частью вашего оператора if, они должны иметь соответствующие отступы.

1    if easternLat and easternLong:
2        for word in words:
3            ...
4        numOfTweetsEastern=numOfTweetsEastern+1
5        sentimentValueEastern=(depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE)+(goodKeys*GOODVALUE)+(happyKeys*HAPPYVALUE)
6    elif centralLat and centralLong:
7        for word in words:
8            ...

Это приведет к правильной структуре if/elif.

0 голосов
/ 21 марта 2019

Чтобы добавить к тому, что уже было сказано:

  • Ваш for цикл излишне дублируется несколько раз
  • else: pass ничего не делает и может быть удален
  • Вы не сбрасываете счетчики между циклами - каждый раз их нужно сбрасывать на ноль
  • Вы не добавляете значение чувства к, например ,sentimentValueMountain, поэтому оно будет неправильным в> 1 записи для этого часового пояса

Таким образом, применяя это к центральной логике в вашем коде:

    ...
    pacificLong= -125.242264<= long <= -115.236428

    # You need to set all of your counters to zero here 

    for word in words: # do this once, then add the result to the relevant timezone
        if word in depressed:
            depressedKeys += 1
        elif word in okay:
            okayKeys += 1
        elif word in good:
            goodKeys += 1
        elif word in happy:
            happyKeys += 1   
    sentimentValue = (depressedKeys*DEPRESSEDVALUE)+(okayKeys*OKAYVALUE) + (goodKeys*GOODVALUE) + (happyKeys*HAPPYVALUE)
    if easternLat and easternLong:
        numOfTweetsEastern += 1
        sentimentValueEastern += sentimentValue # changed = to +=
    elif centralLat and centralLong:
        numOfTweetsCentral += 1
        sentimentValueCentral += sentimentValue
    elif mountainLat and mountainLong:
        numOfTweetsMountain += 1
        sentimentValueMountain += sentimentValue
    elif pacificLat and pacificLong:
        numOfTweetsPacific += 1
        sentimentValuePacific += sentimentValue

happScoreEastern=sentimentValueEastern/numOfTweetsEastern
...

...