Линейные алгоритмы
Форматированный вывод данных
Продемонстрировать возможности: вывода данных в табличной форме (с выровненными столбцами); выравнивания слева; вывода вещественных чисел с заданным количеством знаков после запятой. |
В языках программирования, имеющих практическое значение, предусмотрены специальные синтаксические конструкции, позволяющие выводить данные в поля заданной ширины, выравнивать их по разным краям поля, а также выводить вещественные числа в различных форматах.
Форматированный вывод
print("%8.3f" % 3.141593)
print("%-8.3f число Пи" % 3.141593)
Использование методов
print("hello".rjust(10)+'!')
print("hello".ljust(10)+'!')
print("hello".center(10)+'!')
Обмен значений численных переменных
Пользователь вводит два числа. Одно присваивается одной переменной, а второе — другой. Необходимо поменять значения переменных так, чтобы значение первой оказалось во второй, а второй — в первой. |
Существует два способа обменять значения переменных. Первый подходит для любых типов данных, а второй — только для численных.
1-й способ. Через «буферную» переменную
- Пусть первое введенное значение присвоено переменной a, второе — b.
- Присвоим некой третьей переменной (например, c) значение хранимое в a. Таким образом окажется, что одно и то же значение будет сохранено в двух переменных.
- Запишем значение переменной b в a. Таким образом, мы «затрем» прежнее содержимое a, а значение b будет храниться в двух переменных.
- Однако значение a не потеряно, т.к. заранее было сохранено в c. Теперь мы можем присвоить переменной b значение хранимое в c.
В результате данных трех присвоений окажется, что в переменной a будет значение b, в b — значение a.
2-й способ. Путем арифметических операций
- Запишем в переменную a сумму значений двух переменных: a и b.
- Переменной b присвоить разность между новым значением переменной a и значением b. Таким образом в b окажется старое значение a.
- Переменной a присвоить разность между ее текущим значением и новым значением переменной b. В результате в a окажется старое значение b.
Способ 1
a = int(input())
b = int(input())
print('a=%d; b=%d' % (a,b))
c = a
a = b
b = c
print('a=%d; b=%d' % (a,b))
Способ 2
a = int(input())
b = int(input())
print('a=%d; b=%d' % (a,b))
a = a + b
b = a - b
a = a - b
print('a=%d; b=%d' % (a,b))
Способ 3
a = int(input())
b = int(input())
print('a=%d; b=%d' % (a,b))
a,b = b,a
print('a=%d; b=%d' % (a,b))
Битовые операции над числами
Выполнить логические побитовые операции «И», «ИЛИ» и др. над числами 5 и 6. Выполнить над числом 5 побитовый сдвиг вправо и влево на два знака. Объяснить полученный результат. |
Обычно в языках программирования предусмотрены так называемые логические побитовые операции. Они выполняются не над самими числами, а над их двоичным представлением. Например, число 5 в двоичной системе счисления выражается как 101, а число 6 — как 110. Выполняя логическую побитовую операцию «И» получим число 4, т.к. в младшим разряде числа 5 стоит 1, а числа 6 — 0. Выражение «1 и 0» возвращает 0. Продолжая поразрядно выполнять логическое «И» в среднем разряде получим 0, а в старшем 1. Можно записать так:
101
110
100
Двоичное число 100 — это десятичное число 4.
Выполним операцию побитового логического «ИЛИ»:
101
110
111 — это число 7.
«Исключающее ИЛИ»:
101
110
011 — это число 3.
При сдвиге биты просто сдвигаются на указанное количество ячеек в освободившиеся ячейки дописываются нули или единицы (это зависит от ряда причин):
110 << 2 = 11000 (число 24),
110 >> 2 = 001 (число 1).
a = 5
print("%d = %s" % (a, bin(a)))
b = 6
print("%d = %s" % (b, bin(b)))
print("%d & %d = %d (%s)" % (a,b,a&b,bin(a&b)))
print("%d | %d = %d (%s)" % (a,b,a|b,bin(a|b)))
print("%d ^ %d = %d (%s)" % (a,b,a^b,bin(a^b)))
print("%d << 2 = %d (%s)" % (b,b<<2,bin(b<<2)))
print("%d >> 2 = %d (%s)" % (b,b>>2,bin(b>>2)))