2013-10-25 2 views
1

Я получаю ошибку в строке 14? Я новичок в python, очень новый, начал 3 дня назад.Я продолжаю получать ошибки python 2.7

varA = 2 
varB = 1 

if varB or varA == str: 
print("string involved") 

elif varA > varB: 
print('bigger') 

elif varA == varB: 
print('equal') 

else varA < varB: 
print('smaller') # this is line 14, why am I getting an error here? 
+8

[ 'else' пункт] (http://docs.python.org/2/reference/compound_stmts.html#else) не принимает предикат. Замените 'else varA falsetru

+4

В будущем, когда вы получите сообщение об ошибке, отправьте сообщение об ошибке (все, с трассировкой), поэтому нам не нужно гадать. На этот раз это было довольно легко (и фальсетру достаточно быстро), что он не терял времени, но в целом это будет. – abarnert

+0

В будущем было бы полезно указать, какие ошибки вы получите, и/или выделить строку, в которой была получена ошибка. 14 все еще легко подсчитать, если бы это было 67 или 80, это могла быть другая история. Продолжайте работать :) – icedwater

ответ

9

Вы должны изменить предпоследней линию

elif varA < varB: 

или

else: 

else не может использоваться с условием.

К слову: Ваш первый if, вероятно, не делает того, что вы хотите. Условие, которое вы написали, равно (varB) or (varA == str). То, что вы хотите сделать, это:

if isinstance(varA, basestring) or isinstance(varB, basestring): 
+0

о том, если varB == str или varA == str: – user2918250

+1

Логика лучше. Но он не будет делать то, что вы хотите. 'str' - это класс. Поэтому, если вы сравниваете 'var' с' str', он будет равен только, если 'var' является ссылкой на класс' str'. (Вы можете попробовать это с помощью интерактивного интерпретатора.) Мой код проверяет, является ли 'var' строковым экземпляром. –

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