2014-11-04 5 views
0

Я пытаюсь сравнить входную строку, но когда я вхожу в barack в качестве входа, компилятор напрямую переходит в условие else, игнорируя условие if и выдавая мне вывод «Wrong ответ "Сравнение строки с входной строкой :: python

def main(): 
    First_name = raw_input(" enter the first name of President Obama : ") #input 
    if First_name == ['b', 'a', 'r','a', 'c', 'k'] : 
      print "Correct answer" 
     else : 
      print "Wrong answer" 


    Exit_key = input('Press any key to end') 
+2

Почему, по вашему мнению, вход является списком ?! – jonrsharpe

+0

Строки Python не являются массивами символов. –

ответ

2

Есть ли причина, по которой вы это делаете? Попробуйте:

if First_name == "Barack" : 
+0

работал как шарм спасибо – johnny

+0

'if First_name.lower() == barack' будет больше pythonic – Hackaholic

+0

Нет проблем, пожалуйста, отметьте это как принятый ответ, если он работает. – marsh

1

raw_input является строкой так, чтобы сделать то, что вы хотите, вы должны вызвать список на строку:

if list(First_name) == ['b', 'a', 'r','a', 'c', 'k']) 

Это легче всего сделать if First_name == "barack"

In [1]: inp = raw_input() 
barack 

In [2]: list(inp) 
Out[2]: ['b', 'a', 'r', 'a', 'c', 'k'] 

In [3]: inp 
Out[3]: 'barack' 
0

используя lambda и map. просто, если вы хотите изучить базовую концепцию

if map(lambda x:x,First_name.lower()) == ['b', 'a', 'r','a', 'c', 'k']: 
Смежные вопросы