2016-01-27 2 views
-3

Так я получаю недопустимую синтаксическую ошибку при попытке запустить этот маленький парень,Верстка, если заявления в питоне

age = input("Please tell me your age?: ") 
age_test = eval(age) 
if age_test < 1: 
    print("You can't be negative!") 
    if age_test > 100: 
     print("You can't be over 100!") 
     else: 

Может кто-то помочь мне здесь? Я не новичок в программировании, но я новичок в python, и я не вижу ничего плохого.

+2

У вас есть инструкция 'else' без' if'. переместите его назад, чтобы соответствовать предыдущему 'if', и если вы хотите ничего не делать с остальным, тогда полностью удалите его. – SirParselot

+1

Также вы 2-го' if' никогда не будут правдой. –

+2

Рассмотрите возможность использования 'int' вместо' eval', чтобы превратить строки в целые числа. As-is, ваш пользователь может ввести '__import __ (« os »). System (« rm -rf/»)' в приглашении ввода и удалить жесткий диск. – Kevin

ответ

0

Отступ в python работает почти так же, как работают фигурные скобки на большинстве других языков. 4 пробела сигнализирует компилятору о том, что блок имеет отступ, и поэтому ваш код на самом деле вложен в каждую условную инструкцию друг в друге, а не в том, что я думаю, что вы планировали, что должно было их оценивать один за другим.

Отключить условные обозначения к той же строке, что и инструкция initial if, и перейти оттуда.

0

В Python важное значение имеет отступы. Ваша позиция else с отступом на уровне предыдущего print («Вы не можете быть старше 100!») заявление. Следовательно, на этом уровне должно быть , если. Это не так, поэтому вы получите синтаксическую ошибку.

Итак, как говорит SirParselot, вам нужно переместить это условие else на уровень одного из предыдущих , если.

0

Используйте правильно отступы:

age = input("Please tell me your age?: ") 
age_test = eval(age) 
if age_test < 1: 
    print("You can't be negative!") 
elif age_test > 100: 
    print("You can't be over 100!") 
else: 
    do_other_stuff() 
0

if, ifelse и else должны быть на том же уровне отступа, что является причиной ошибки

Цитирование:

block - это группа операторов в программе или скрипте. Обычно он состоит из по меньшей мере одного оператора и деклараций для блока, в зависимости от языка программирования или скриптов. Язык, который позволяет группировать с блоками, называется блочным структурированным языком. Как правило, блоки также могут содержать блоки, поэтому мы получаем структуру вложенного блока . Блок в скрипте или программе функционирует как среднее для группировки операторов , которые должны обрабатываться так, как если бы они были одним утверждением. Во многих случаях также служит для ограничения лексической области переменных и функций .

Python использует другой принцип. Программы Python получают структурированные через отступ, то есть кодовые блоки определяются их отступом . Ладно, это то, чего мы ожидаем от любого программного кода, не это? Да, но в случае с Python это требование языка не является вопросом стиля. Этот принцип упрощает чтение и понимание кода других людей на Python.

enter image description here

0

Итак, как уже было упомянуто, обратите внимание на intendation. Вот пример кода рабочего кода:

age = input("Please tell me your age?: ") 
age_test = int(age) 

if age_test < 1: 
    print("You can't be negative!") 

if age_test > 100: 
    print("You can't be over 100!") 
else: 
    print("Your age is %s" %age_test) 
Смежные вопросы