Условные операторы
Содержание:
Конструкторы в Python
Функции класса, начинающиеся с двойного подчеркивания __, называются специальными функциями, поскольку имеют особое значение.
Особый интерес представляет функция __init __(). Эта специальная функция вызывается всякий раз, когда создается новый объект этого класса.
Этот тип функций также называется конструкторами в объектно-ориентированном программировании (ООП). Обычно мы используем его для инициализации всех переменных.
class ComplexNumber: def __init__(self, r=0, i=0): self.real = r self.imag = i def get_data(self): print(f'{self.real}+{self.imag}j') # Create a new ComplexNumber object num1 = ComplexNumber(2, 3) # Call get_data() method # Output: 2+3j num1.get_data() # Create another ComplexNumber object # and create a new attribute 'attr' num2 = ComplexNumber(5) num2.attr = 10 # Output: (5, 0, 10) print((num2.real, num2.imag, num2.attr)) # but c1 object doesn't have attribute 'attr' # AttributeError: 'ComplexNumber' object has no attribute 'attr' print(num1.attr)
Выход
2+3j (5, 0, 10) Traceback (most recent call last): File "<string>", line 27, in <module> print(num1.attr) AttributeError: 'ComplexNumber' object has no attribute 'attr'
В приведенном выше примере мы определили новый класс для представления комплексных чисел. В нем есть две функции: __init __() для инициализации переменных (по умолчанию ‒ ноль) и get_data() для правильного отображения числа.
В предыдущем шаге следует отметить интересную вещь: атрибуты объекта можно создавать «на лету». Мы создали новый атрибут attr для объекта num2 и также прочитали его. Но это не создает этот атрибут для объекта num1.
Логический оператор AND в Python
Вот простой пример логического оператора and.
x = 10 y = 20 if x > 0 and y > 0: print('Both x and y are positive numbers')
Вывод: и x, и y – положительные числа.
Перед выполнением логической операции выражения оцениваются. Таким образом, приведенное выше условие if аналогично приведенному ниже:
if (x > 0) and (y > 0): print('Both x and y are positive numbers')
В Python каждая переменная или объект имеет логическое значение.
if x and y: print('Both x and y have boolean value as True')
Вывод: И x, и y имеют логическое значение True, потому что функция len() ‘x’ и ‘y’ вернет 2, т.е.> 0.
Давайте подтвердим приведенное выше утверждение, определив настраиваемый объект. Python использует функцию __bool __() для получения логического значения объекта.
class Data: id = 0 def __init__(self, i): self.id = i def __bool__(self): print('Data bool method called') return True if self.id > 0 else False d1 = Data(-10) d2 = Data(10) if d1 and d2: print('Both d1 and d2 ids are positive') else: print('Both d1 and d2 ids are not positive')
Вывод:
Data bool method called At least one of d1 and d2 ids is negative
Обратите внимание, что функция __bool __() вызывается только один раз, что подтверждается выводом оператора печати. На диаграмме ниже изображена логическая блок-схема и схема работы
На диаграмме ниже изображена логическая блок-схема и схема работы.
Python if else Command Example
The following example shows how to use if..else command in Python.
# cat if4.py days = int(input("How many days are in March?: ")) if days == 31: print("You passed the test.") else: print("You failed the test.") print("Thank You!")
In the above example:
- 1st line: Here, we are asking for user input. The input will be an integer, which will be stored in the variable days.
- 2nd line: This is the if command, where we are comparing whether the value of the variable days is equal to the numerical value 31. The colon at the end is part of the if command syntax, which should be given.
- 3rd line: This line starts with two space indent at the beginning. Any line (one or more) that follows the if statement, which has similar indentation at the beginning is considered part of the if statement block true condition.
- 4th line: This has the else keyword for this if block. The colon at the end is part of the if..else command syntax, which should be given.
- 5th line: This line starts with two space indent at the beginning. Any line (one or more) that follows the else statement, which has similar indentation at the beginning is considered part of the if statement block false condition.
- 6th line: This line is outside the if statement block. So, this will get executed whether the if statement is true or false.
The following example is also similar to above example, but this if..else uses string variable for comparision.
# cat if5.py code = raw_input("What is the 2-letter state code for California?: ") if code == 'CA': print("You passed the test.") else: print("You failed the test.") print("Thank You!")
The following is the output of the above examples, when the if statement condition is false. i.e The else block will get executed here.
# python if4.py How many days are in March?: 30 You failed the test. Thank You! # python if5.py What is the 2-letter state code for California?: NV You failed the test. Thank You!
self
Рассотрим пример. Пусть у нас есть объект мяч — ball , обладающий атрибутами и методами.
Атрибуты мяча могут быть:
ball.color - цвет, например, красныйball.size - размер, например, маленькийball.price – стоимость мяча
Методы нашего объекта могут выглядеть следующим образом:
ball.Move( ) - перемещение мячаball.Show( ) – вывести характеристики (атрибуты) мяча на экран
Переменная self указывает на конкретный объект экземпляра класса. Доступ к атрибутам и методам осуществляется через переменную self. Это главное назначение переменной self.
Предположим мы создали три мяча — экземпляры класса Ball: ball1, ball2, ball3.Мячи могут иметь разные характеристики, например, как в таблице.
Объект |
Self |
Color |
Size |
Price |
|
имя объекта |
адрес объекта |
||||
ball1 |
адрес 1 |
адрес 1 |
Красный |
Маленький |
10 |
ball2 |
адрес 2 |
адрес 2 |
Синий |
Средний |
20 |
ball3 |
адрес 3 |
адрес 3 |
Белый |
Большой |
30 |
Переменная self представляет ссылку на экземпляр класса, т.е. содержит адрес объекта. Всем методам класса автоматически передается эта ссылка.
Предположим в классе Ball имеется метод Show( ) – вывести характеристики мяча.
Python if…elif…else Statement
Syntax of if…elif…else
if test expression: Body of if elif test expression: Body of elif else: Body of else
The is short for else if. It allows us to check for multiple expressions.
If the condition for is , it checks the condition of the next block and so on.
If all the conditions are , the body of else is executed.
Only one block among the several blocks is executed according to the condition.
The block can have only one block. But it can have multiple blocks.
Example of if…elif…else
When variable num is positive, Positive number is printed.
If num is equal to 0, Zero is printed.
If num is negative, Negative number is printed.
Как Открыть Файл С Помощью Python?
В Python есть встроенная функция open(), открывающая файл сверху. Эта функция возвращает объект файла, также называемый дескриптором, поскольку он используется для чтения или изменения файла соответствующим образом.
Мы можем указать режим при открытии файла. В режиме мы указываем, хотим ли мы
- читать “r”
- напишите “w” или
- добавьте в файл букву “а”. Мы также указываем, хотим ли мы открыть файл в текстовом или двоичном режиме.
По умолчанию используется чтение в текстовом режиме. В этом режиме мы получаем строки при чтении из файла.
o = open("edureka.txt") # equivalent to 'r' or 'rt' o = open ("edureka.txt",'w') # write in text mode o = open ("img1.bmp",'rb' ) # read and write in binary mode
Вложенные операторы If
Вложенные операторы if используются, когда нужно проверить второе условие, когда первое условие выполняется. Для этого можно использовать оператор if-else внутри другого оператора if-else. Синтаксис вложенного оператора if:
if statement1: #внешний оператор if print("true") if nested_statement: #вложенный оператор if print("yes") else: #вложенный оператор else print("no") else: #внешний оператор else print("false")
Результатом работы программы может быть:
Если значение statement1 равно true, программа проверяет, равно ли true значение nested_statement. Если оба условия выполняются, результат будет следующим:
Вывод:
true yes
Если statement1оценивается как true, но nested_statement оценивается как false, вывод будет уже другим:
Вывод:trueno
Значение statement1 равно false, а вложенный оператор if-else не будет выполняться, поэтому «сработает» оператор else:
Вывод:
false
Также можно использовать несколько вложенных операторов if:
if statement1: #внешний if print("hello world") if nested_statement1: #первый вложенный if print("yes") elif nested_statement2: # первый вложенный elif print("maybe") else: # первый вложенный else print("no") elif statement2: # внешний elif print("hello galaxy") if nested_statement3: #второй вложенный if print("yes") elif nested_statement4: # второй вложенный elif print("maybe") else: # второй вложенный else print("no") else: # внешний else statement("hello universe")
В приведенном выше коде внутри каждого оператора if (в дополнение к оператору elif ) используется вложенный if. Это дает больше вариантов в каждом условии.
Используем пример вложенных операторов if в программе grade.py. Сначала проверим, является ли балл проходным (больше или равно 65%). Затем оценим, какой буквенной оценке соответствует балл. Но если балл непроходной, нам не нужно проверять буквенные оценки. И можно сразу информировать ученика, что балл является непроходным. Модифицированный код с вложенным оператором if:
if grade >= 65: print("Passing grade of:") if grade >= 90: print("A") elif grade >=80: print("B") elif grade >=70: print("C") elif grade >= 65: print("D") else: print("Failing grade")
При переменной grade равной 92 первое условие будет выполнено, и программа выведет «Passing grade of:». Затем она проверит, является ли оценка больше или равной 90. Это условие также будет выполнено и она выведет A.
Если переменная grade равна 60, то первое условие не будет выполнено. Поэтому программа пропустит вложенные операторы if, перейдет к оператору else и выведет сообщение «Failing grade».
Но можно добавить еще больше вариантов и использовать второй слой вложенных if. Например, чтобы определить оценки A+, A и A-. Мы можем сделать это, сначала проверив, является ли оценка проходной, затем, является ли оценка 90 или выше. А после этого, превышает ли оценка 96 для A+, например:
if grade >= 65: print("Passing grade of:") if grade >= 90: if grade > 96: print("A+") elif grade > 93 and grade <= 96: print("A") elif grade >= 90: print("A-")
Для переменной grade со значением 96 программа выполнит следующее:
- Проверит, является ли оценка больше или равной 65 (true).
- Выведет «Passing grade of:»
- Проверит, является ли оценка больше или равной 90 (true).
- Проверит, превышает ли оценка 96 (false).
- Проверит, является ли оценка больше 93, а также меньше или равна 96 (true).
- Выведет
- Пропустит оставшиеся вложенные условные операторы и вернется к остающемуся коду.
Результат работы программы для переменной grade равной 96:
Вывод:
Passing grade of: A
Вложенные операторы if позволяют добавлять несколько уровней условий в создаваемый код.
Цикл for
Как было сказано ранее, мы используем цикл в тех случаях, когда вам нужно повторить что-нибудь n-ное количество раз. Это проще понять, если взглянуть на пример. Мы используем встроенную функцию Python range. Функция range создаст список длинной в «n» элементов. В Python версии 2.Х существует другая функция под названием xrange, которая является генератором чисел и не такая ресурсоемкая, как range. Ранее разработчики сменили xrange на range в Python 3. Вот пример:
Python
print(range(5)) # ответ: range(0, 5)
1 | print(range(5))# ответ: range(0, 5) |
Как вы видите, функция range взяла целое число и вернула объект range. Функция range также принимает начальное значение, конечное значение и значение шага. Вот еще два примера:
Python
a = range(5, 10)
print(a) # range(5, 10)
b = list(range(1, 10, 2))
print(b) #
1 2 3 4 5 |
a=range(5,10) print(a)# range(5, 10) b=list(range(1,10,2)) print(b)# |
В пером примере показано, что вы можете передать начальное и конечное значение, и функция range вернет числа, начиная с начального значения вплоть до (но не включая) последнее значение. Например, при запросе 5-10 мы получим 5-9. Во втором примере видно, как использовать функцию списка (list) для того, чтобы функция range вернула каждый второй элемент, между 1 и 10. Так что она начинает с 1, пропускает 2 и так далее. Теперь вы, наверное, гадаете, что же именно она будет делать с циклами? Что-ж, есть один простой способ показать, как работает цикл с использованием функции range! Давайте взглянем:
Python
for number in range(5):
print(number)
1 2 |
fornumber inrange(5) print(number) |
Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов. Цикл for, показанный выше, может быть эквивалентом следующего:
Python
for number in :
print(number)
1 2 |
fornumber in,1,2,3,4 print(number) |
Функция range лишь делает результат несколько меньшим. Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать со списком. Давайте взглянем, может ли он выполнять итерацию со словарем.
Python
a_dict = {«one»:1, «two»:2, «three»:3}
for key in a_dict:
print(key)
1 2 3 4 |
a_dict={«one»1,»two»2,»three»3} forkey ina_dict print(key) |
Когда вы используете for в словаре, вы увидите, что он автоматически перебирает ключи. Вам не нужно указывать ключ for в a_dict.keys() (впрочем, это также работает). Python делает только нужные нам вещи. Вы возможно думаете, почему ключи выводятся в другом порядке, отличном от того, какой был указан в словаре? Как мы знаем из соответствующей статьи, словари не упорядочены, так что мы можем выполнять итерацию над ними, при этом ключи могут быть в любом порядке. Теперь, зная, что ключи могут быть отсортированы, вы можете отсортировать их до итерации. Давайте немного изменим словарь, чтобы увидеть, как это работает.
Python
a_dict = {1:»one», 2:»two», 3:»three»}
keys = a_dict.keys()
keys = sorted(keys)
for key in keys:
print(key)
1 2 3 4 5 6 |
a_dict={1″one»,2″two»,3″three»} keys=a_dict.keys() keys=sorted(keys) forkey inkeys print(key) |
Результат:
Python
1
2
3
1 2 3 |
1 2 3 |
Давайте остановимся и разберемся с тем, что делает этот код. Во-первых, мы создали словарь, в котором ключи выступают в качестве целых чисел, вместо строк. Далее, мы извлекли ключи из словаря. Каждый раз, когда вы взываете метод keys(), он возвращает неупорядоченный список ключей. Если вы выведите их, и увидите, что они расположен в порядке по возрастанию, то это просто случайность. Теперь у нас есть доступ к ключам словаря, которые хранятся в переменной, под названием keys. Мы сортируем наш список, после чего используем цикл for в нем. Теперь мы готовы к тому, чтобы сделать все немного интереснее. Мы попробуем применить цикл в функции range, но нам нужно вывести только целые числа. Чтобы сделать это, нам нужно использовать условный оператор вместо параметра шага range. Это можно сделать следующим образом:
Python
for number in range(10):
if number % 2 == 0:
print(number)
1 2 3 |
fornumber inrange(10) ifnumber%2== print(number) |
Результат:
Python
0
2
4
6
8
1 2 3 4 5 |
2 |
Вы наверное гадаете, что вообще здесь происходит? Что еще за знак процента? В Python, % называется оператором модуля. Когда вы используете оператор модуля, он возвращает остаток. Когда вы делите целое число на два, вы получаете число без остатка, так что мы выводим эти числа. Вам, возможно, не захочется использовать оператор модуля часто в будущем, но в моей работе он нередко помогает. Теперь мы можем взглянуть на цикл while.
Оператор elif
позволяет программе выбирать из нескольких вариантов. Это удобно, например, в том случае, если одну переменную необходимо многократно сравнить с разными величинами.
Такая конструкция может содержать сколь угодно большую последовательность условий, которые интерпретатор будет по порядку проверять.
Но помните, что первое условие всегда задается с
Также не стоит забывать, что как только очередное условие в операторе оказывается истинным, программа выполняет соответствующий блок инструкций, а после переходит к следующему выражению.
Из этого вытекает, что даже если несколько условий истинны, то исполнению подлежит все равно максимум один, первый по порядку, блок кода с истинным условием.
Если ни одно из условий для частей и не выполняется, то срабатывает заключительный блок под оператором (если он существует).
Логический оператор OR
Давайте посмотрим на простой пример логического оператора OR.
x = 10 y = 20 if x > 0 or y > 0: print('At least one of x and y is positive number')
Выход: по крайней мере одно из x и y является положительным числом.
Давайте подтвердим это простым фрагментом кода. Мы будем повторно использовать класс данных, определенный ранее.
d1 = Data(10) d2 = Data(20) # The expressions are evaluated until it's required if d1 or d2: print('At least one of d1 and d2 id is a positive number') else: print('Both d1 and d2 id are negative')
Вывод:
Data bool method called At least one of d1 and d2 id is a positive number
Обратите внимание, что метод __bool __() вызывается только один раз и, поскольку он оценивается как True, дальнейшие выражения не оцениваются. Давайте запустим еще один пример, в котором оба логических значения объекта данных возвращают False
Давайте запустим еще один пример, в котором оба логических значения объекта данных возвращают False.
d1 = Data(-10) d2 = Data(-20) if d1 or d2: print('At least one of d1 and d2 id is a positive number') else: print('Both d1 and d2 id are negative')
Вывод:
Data bool method called Data bool method called Both d1 and d2 id are negative
Наконец, на изображении ниже изображена блок-схема логического оператора или оператора.
Syntax
All the programs in the first lesson were executed sequentially, line after line.
No line could be skipped.
Let’s consider the following problem: for the given integer X determine
its absolute value. If X>0 then the program should print the value X,
otherwise it should print -X. This behavior can’t be reached using the sequential
program. The program should conditionally select the next step. That’s where the conditions help:
-273
x = int(input()) if x > 0: print(x) else: print(-x)
This program uses a conditional statement . After the
we put a condition following by a colon.
After that we put a block of instructions which will be executed only if the condition
is true (i.e. evaluates to ). This block may be followed by the word
, colon and another block of instructions which will be executed only if the condition is false
(i.e. evaluates to ). Is the case above, the condition is false, so the ‘else’ block
is executed. Each block should be indented using spaces.
To sum up, the conditional statement in Python has the following syntax:
if condition: true-block several instructions that are executed if the condition evaluates to True else: false-block several instructions that are executed if the condition evaluates to False
The keyword with the ‘false’ block may be omitted in case nothing should be
done if the condition is false. For example, we can replace the variable
with its absolute value like this:
-273
x = int(input()) if x < 0: x = -x print(x)
In this example the variable is assigned to only if .
In contrast, the instruction is executed every time, because it’s not indented,
so it doesn’t belong to the ‘true’ block.
Indentation is a general way in Python to separate blocks of code. All instructions within the same
block should be indented in the same way, i.e. they should have the same number of spaces
at the beginning of the line. It’s recommended to use 4 spaces for indentation.
The indentation is what makes Python different from the most of other language, in which
the curly braces and are used to form the blocks.
By the way, there’s a builtin-function for absolute value in Python:
-273
x = int(input()) print(abs(x))
if statement #
The syntax of if statement is as follows:
Syntax:
1 2 3 4 5 |
if condition <indented statement 1> <indented statement 2> <non-indented statement> |
The first line of the statement i.e is known as if clause and the is a boolean expression, that is evaluated to either or . In the next line, we have have block of statements. A block is simply a set of one or more statements. When a block of statements is followed by if clause, it is known as if block. Notice that each statement inside the if block is indented by the same amount to the right of the if keyword. Many languages like C, C++, Java, PHP, uses curly braces () to determine the start and end of the block but Python uses indentation. Each statement inside the if block must be indented by the same number of spaces. Otherwise, you will get syntax error. Python documentation recommends to indent each statement in the block by 4 spaces. We use this recommendation in all our programs throughout this course.
How it works:
When if statement executes, the condition is tested. If condition is true then all the statements inside the if block is executed. On the other hand, if the condition is false then all the statements in the if block is skipped.
The statements followed by the if clause which are not indented doesn’t belong to the if block. For example, is not the part of the if block, as a result, it will always execute no matter whether the condition in the if clause is true or false.
Here is an example:
python101/Chapter-09/if_statement.py
1 2 3 4 |
number = int(input("Enter a number: ")) if number > 10 print("Number is greater than 10") |
First Run Output:
1 2 |
Enter a number: 100 Number is greater than 10 |
Second Run Output:
Enter a number: 5
Notice that in the second run when condition failed, statement inside the if block is skipped. In this example the if block consist of only one statement, but you can have any number of statements, just remember to properly indent them.
Now consider the following code:
python101/Chapter-09/if_statement_block.py
1 2 3 4 5 6 7 |
number = int(input("Enter a number: ")) if number > 10 print("statement 1") print("statement 2") print("statement 3") print("Executes every time you run the program") print("Program ends here") |
First Run Output:
1 2 3 4 5 6 |
Enter a number: 45 statement 1 statement 2 statement 3 Executes every time you run the program Program ends here |
Second Run Output:
1 2 3 |
Enter a number: 4 Executes every time you run the program Program ends here |
The important thing to note in this program is that only statements in line 3,4 and 5 belongs to the if block. Consequently, statements in line 3,4 and 5 will execute only when the if condition is true, on the other hand statements in line 6 and 7 will always execute no matter what.
Python shell responds somewhat differently when you type control statements inside it. Recall that, to split a statement into multiple lines we use line continuation operator (). This is not the case with control statements, Python interpreter will automatically put you in multi-line mode as soon as you hit enter followed by an if clause. Consider the following example:
1 2 3 4 |
>>> >>> n = 100 >>> if n > 10 ... |
Notice that after hitting Enter key followed by if clause the shell prompt changes from to . Python shell shows for multi-line statements, it simply means the statement you started is not yet complete.
To complete the if statement, add a statement to the if block as follows:
1 2 3 4 5 |
>>> >>> n = 100 >>> if n > 10 ... print("n is greater than 10") ... |
Python shell will not automatically indent your code, you have to do that yourself. When you are done typing statements in the block hit enter twice to execute the statement and you will be taken back to the normal prompt string.
1 2 3 4 5 6 7 |
>>> >>> n = 100 >>> if n > 10 ... print("n is greater than 10") ... n is greater than 10 >>> |
The programs we have written so far ends abruptly without showing any response to the user if the condition is false. Most of the time we want to show the user a response even if the condition is false. We can easily do that using if-else statement
Сравнение строк
Как вы видите,
сравнение двух числовых значений выполняется вполне очевидным образом. Но можно
ли, например, сравнивать строки между собой? Оказывается да, можно. Чтобы
определить, что одна строка больше другой, Python использует
«алфавитный» или «лексикографический» порядок. Другими словами, строки сравниваются
посимвольно. Например:
print('Я' > 'А' ) print( 'Кот' > 'Код' ) print( 'Сонный' > 'Сон' )
Алгоритм
сравнения двух строк довольно прост:
-
Сначала
сравниваются первые символы строк. -
Если первый
символ первой строки больше (меньше), чем первый символ второй, то первая
строка больше (меньше) второй. - Если первые
символы равны, то таким же образом сравниваются уже вторые символы строк.
Сравнение
продолжается, пока не закончится одна из строк. Если обе строки заканчиваются
одновременно, и все их соответствующие символы равны между собой, то строки считаются
равными. Иначе, большей считается более длинная строка.
В примерах выше
сравнение ‘Я’ > ‘А’ завершится на первом шаге, тогда как строки
«Кот» и «Код» будут сравниваться посимвольно:
- К равна К.
- о равна о.
- т больше чем д.
Синтаксис
Все программы первого урока выполнялись последовательно, строка за строкой. Никакая строка не может быть пропущена.
Рассмотрим следующую задачу: для данного целого X определим ее абсолютное значение. Если X> 0, то программа должна печатать значение X, иначе оно должно печатать -X. Такое поведение невозможно достичь с помощью последовательной программы. Программа должна условно выбрать следующий шаг. Вот где помогают условия:
-273
x = int(input()) if x > 0: print(x) else: print(-x)
Эта программа использует условный оператор . После того мы положим условие следующее двоеточием. После этого мы помещаем блок инструкций, который будет выполняться только в том случае, если условие истинно (т.е. имеет значение ). За этим блоком может следовать слово , двоеточие и другой блок инструкций, который будет выполняться только в том случае, если условие является ложным (т.е. имеет значение ). В приведенном выше случае условие ложно, поэтому выполняется блок «else». Каждый блок должен иметь отступы, используя пробелы.
Подводя итог, условный оператор в Python имеет следующий синтаксис:
if condition : true-block several instructions that are executed if the condition evaluates to True else: false-block several instructions that are executed if the condition evaluates to False
Ключевое слово с блоком «false» может быть опущено в случае, если ничего не должно быть сделано, если условие ложно. Например, мы можем заменить переменную своим абсолютным значением следующим образом:
-273
x = int(input()) if x < 0: x = -x print(x)
В этом примере переменная назначается только если . Напротив, команда выполняется каждый раз, потому что она не имеет отступов, поэтому она не принадлежит блоку «истина».
Отступ является общим способом в Python для разделения блоков кода. Все инструкции в одном и том же блоке должны быть отступом одинаково, т. Е. Они должны иметь одинаковое количество пробелов в начале строки. Для отступов рекомендуется использовать 4 пробела.
Отступ — это то, что делает Python отличным от большинства других языков, в которых фигурные скобки и используются для формирования блоков.
Кстати, встроенная функция для абсолютного значения в Python:
-273
x = int(input()) print(abs(x))