2013-11-07 2 views
2

Я работаю, хотя курс на Python. Следующий код предназначен для подсчета гласных в строке. Я набрал его, поскольку я думал, что это должно быть и не сработало. Затем я вырезал n пасту из заметок лекций, и это действительно сработало.Синтаксис Python - не могу понять, почему получение синтаксической ошибки

Но я не вижу, в чем разница! Я прокомментировал свои неработающие выражения. Рабочее выражение ниже.

Почему моя не работает?

## count the number of vowels in string s 
s = 'azcbobobegghakl' 
vowelcount = 0 
for char in s: 
    ## if char == 'a' or char = 'e' or char == 'i' or char == 'o' \ 
     ## or char == 'u': 

    if char == 'a' or char == 'e' or char == 'i' \ 
     or char == 'o' or char == 'u': 

     vowelcount += 1 
print "Number of vowels: " + str(vowelcount) 

Вот сообщение об ошибке:

%run "/var/folders/cs/31zvz_q925v_z3tmvj09dpyc0000gn/T/tmpCEB9ME.py" 
File "/var/folders/cs/31zvz_q925v_z3tmvj09dpyc0000gn/T/tmpCEB9ME.py", line 4 
if char == 'a' or char = 'e' or char == 'i' or char == 'o' \ 
        ^
SyntaxError: invalid syntax 
+3

Не могли бы вы отправить сообщение об ошибке? –

+0

@AnkurAnkan Я добавил это сейчас –

+1

Вы можете видеть, что используете один '=', что означает, что вы выполняете операцию назначения вместо сравнения. –

ответ

2

Вы хотите == вместо =.

Я предлагаю использовать следующий эквивалент вместо этого, так как это более вещего и более удобных для чтения:

if char in 'aeiou': 
    ... 
+0

+1 для pythonic advice –

1

^ указывает вам точную ошибку.

or char = 'e' 

должен быть

or char == 'e' 
+0

Doh! Спасибо, Лутц Хорн. И спасибо за подсказку на ^. Принимая коротко –

+0

Примите ответ от @rightfold –

3

Вы должны использовать == для сравнительных испытаний:

if char == 'a' or char == 'e' or char == 'i' \ 
    or char == 'o' or char == 'u': 

= используется только для присваивания значения переменной.


Или, еще лучше, здесь был бы использовать in:

if char.lower() in "aeiou": 

тестов Этого кода ли строчная версию char можно найти в строке "aeiou". Я добавил .lower(), чтобы ваш код мог обрабатывать заглавные гласные.

+0

+1 для 'lower()' –

Смежные вопросы