2013-11-20 7 views
0

Привет Я новичок в Python, имеющий ошибку отступа в следующем коде:Python 2.7 Отступ ошибка

print "------------------------- Basics Arithamatic Calculator-------------------------" 

int_num_one=input('Enter First Num: ') 
int_num_two=input('Enter Second Num: ') 

list_options={"+", "-", "/", "*"} 

print "Which operation you want to perform *, -, +,/?" 
char_selected_option=raw_input() 
print "Operation selected is %r" % (char_selected_option) 

for char_symbol in list_options: 
    print "Char symbol is %r" % (char_symbol) 
bool_operation_Not_Found=True 
if char_symbol==char_selected_option: 
    int_result=str(int_num_one) + char_selected_option + str(int_num_two) 
    print int_result 
    print "%d %s %d = %d" % (int_num_one, char_selected_option, int_num_two, eval(int_result)) 
    bool_operation_Not_Found=False 
break 
if bool_operation_Not_Found: 
print "Invalid Input" 
+0

'break' находится в неправильном месте, он не принадлежит к' for' петли – Mailerdaimon

+0

быстрое примечание о вашем 'bool_operation_Not_Found 'flag: вы, вероятно, можете избавиться от этого в пользу использования предложения' else', следующего за вашим циклом 'for'. Блок 'else' будет запущен только в том случае, если цикл завершился без конца. – Blckknght

+0

@Blckknght, можете ли вы дать фрагмент кода .. Я думаю, что блок else будет выполняться каждый раз, если ошибка не выполняется. – Zubair

ответ

1

Похоже код «внутри» для цикла не отступом правильно, это должно работать.

for char_symbol in list_options: 
    print "Char symbol is %r" % (char_symbol) 
    bool_operation_Not_Found=True 
    if char_symbol==char_selected_option: 
     int_result=str(int_num_one) + char_selected_option + str(int_num_two) 
     print int_result 
     print "%d %s %d = %d" % (int_num_one, char_selected_option, int_num_two, eval(int_result)) 
     bool_operation_Not_Found=False 
     break 
if bool_operation_Not_Found: 
    print "Invalid Input" 
+0

Последняя строка также должна быть отступом под символом 'if'. – Blckknght

+0

Пропустил это! – MattD

0

Это может быть намного короче; вместо того, чтобы использовать набор и eval, вы могли бы использовать словарь функций:

ops = {'+': lambda a, b: a + b, 
     '-': lambda a, b: a - b, 
     '/': lambda a, b: float(a)/b, 
     '*': lambda a, b: a * b, 
     } 
try: 
    print "%d %s %d = %f" % (
      int_num_one, 
      char_symbol, 
      int_num_two, 
      ops[char_symbol](int_num_one, int_num_two), 
      ) 
except KeyError: 
    print "Invalid Input" 
Смежные вопросы