3586
Комментарий:
|
← Версия 12 от 2010-11-10 00:08:33 ⇥
4830
|
Удаления помечены так. | Добавления помечены так. |
Строка 10: | Строка 10: |
* Логческие операции `AND` `OR` `NOT` и их особенность в Python: . Пример: AND || A || B || результат || || нулевой || произвольное || A (B не вычисляется) || || ненулевой || произвольное || B || |
* Логческие операции `AND`, `OR`, `NOT` и их особенность в Python: Пример: AND || A || B || результат || || нулевой || произвольное || A (B не вычисляется) || || ненулевой || произвольное || B || |
Строка 19: | Строка 16: |
* На плоскости ХОY задана своими координатами точка А. Указать, где она расположена (на какой оси или в каком координатном угле). | * На плоскости ХОY задана своими координатами точка А. Указать, где она расположена (на какой оси (осях)). Принадлежность к оси считать с точностью 1e-5. |
Строка 25: | Строка 22: |
1. Присвоить логической переменной b true, если а) сумма двух первых цифр четырехзначного числа x равна сумме двух его последних цифр б) данная тройка натуральных чисел а, b, с является тройкой Пифагора, т.е. c2 = a2 + b2 в) шахматный конь за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя коорднатами — целыми числами от 1 до 8). и false иначе. |
1. Присвоить логической переменной b true, если выполнено указанное условие, и false иначе. . а) сумма двух первых цифр четырехзначного числа x равна сумме двух его последних цифр {{{ b = x/1000 + x/100%10 == x/10%10 + x%10}}} . б) данная тройка натуральных чисел а, b, с является тройкой Пифагора, т.е. c² = a² + b² {{{ b = c*c == a*a + b*b }}} Варианты, проверяющие все три возможности: {{{ b = c*c == a*a + b*b or a*a == b*b + c*c or b*b == c*c + a*a}}} и {{{ l=[a,b,c] x=max(l) l.remove(x) b = x*x == l[0]*l[0] + l[1]*l[1]}}} . в) шахматный конь за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8). {{{ b = (abs(x1-x2),abs(y1-y2)) in ((1,2),(2,1))}}} |
Строка 31: | Строка 42: |
1. *Имеется прямугольный лист клетчатой бумаги размера M x N клеток. Каждая его клетка может быть закрашена либо незакрашена. Закрашенные клетки этого листа образуют несколько прямоугольников, не касающихся друг друга (даже по диагонали). Этот лист представлен в памяти компьютера в виде двумерного массива A (списка списков) целых чисел (размера MxN) таким образом, что незакрашенной клетке соответствует 0, закрашенной -- 1. Найти N -- количество закрашенных прямоугольников (не клеток!) | {{{ X = B + (T > A and (T - A)*C or 0)}}} 1. Имеется прямоугольный лист клетчатой бумаги размера M x N клеток. Каждая его клетка может быть закрашена либо не закрашена. Закрашенные клетки этого листа образуют несколько прямоугольников, не касающихся друг друга (даже по диагонали). Этот лист представлен в памяти компьютера в виде двумерного массива A (списка списков) целых чисел (размера MxN) таким образом, что незакрашенной клетке соответствует 0, закрашенной -- 1. Найти K -- количество закрашенных прямоугольников (не клеток!) . Решение: прямоугольник по условию однозначно соответствует области вида {{{ 1, 0 0, 0 }}} Их и посчитаем: {{{ K=0 for i in xrange(len(A)-1): for j in xrange(len(A[0])-1): # левый верхний угол квадрата 2x2 if (A[i][j],A[i+1][j],A[i][j+1],A[i+1][j+1])==(1,0,0,0): K+=1 }}} Дополнение: не хватает «полей» справа и внизу, в начале текста вставим: {{{ A=[a+[0] for a in A] A.append([0]*len(a[0])) }}} |
Строка 34: | Строка 62: |
CategoryClass CategoryVmsh | CategoryClass CategoryVmsh |
Логические выражения
— тема по Linux
— необязательная тема
- Интерпретация выражений в терминах «истина-ложь», нулевой элемент класса
- Использование произвольных выражений в условных операторах и операторах цикла
Логческие операции AND, OR, NOT и их особенность в Python:
- Пример: AND
A
B
результат
нулевой
произвольное
A (B не вычисляется)
ненулевой
произвольное
B
- Пример: AND
input()
- На плоскости ХОY задана своими координатами точка А. Указать, где она расположена (на какой оси (осях)). Принадлежность к оси считать с точностью 1e-5.
Домашнее задание
— теоретическое задание
— новая тема
Доказать, что логические операции Python эквивалентны классическим логическим операциям
- Присвоить логической переменной b true, если выполнено указанное условие, и false иначе.
- а) сумма двух первых цифр четырехзначного числа x равна сумме двух его последних цифр
b = x/1000 + x/100%10 == x/10%10 + x%10
- б) данная тройка натуральных чисел а, b, с является тройкой Пифагора, т.е. c² = a² + b²
b = c*c == a*a + b*b
Варианты, проверяющие все три возможности:b = c*c == a*a + b*b or a*a == b*b + c*c or b*b == c*c + a*a
иl=[a,b,c] x=max(l) l.remove(x) b = x*x == l[0]*l[0] + l[1]*l[1]
- в) шахматный конь за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8).
b = (abs(x1-x2),abs(y1-y2)) in ((1,2),(2,1))
- а) сумма двух первых цифр четырехзначного числа x равна сумме двух его последних цифр
- Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц — В руб., а разговоры сверх установленной нормы оплачиваются из расчета С руб. за минуту (A, B, C -- вещественные числа, даны). Вычислить X — плату за пользование телефоном в прошлом месяце, если за него было потрачено T минут разговоров.
X = B + (T > A and (T - A)*C or 0)
- Имеется прямоугольный лист клетчатой бумаги размера M x N клеток. Каждая его клетка может быть закрашена либо не закрашена. Закрашенные клетки этого листа образуют несколько прямоугольников, не касающихся друг друга (даже по диагонали). Этот лист представлен в памяти компьютера в виде двумерного массива A (списка списков) целых чисел (размера MxN) таким образом, что незакрашенной клетке соответствует 0, закрашенной -- 1. Найти K -- количество закрашенных прямоугольников (не клеток!)
- Решение: прямоугольник по условию однозначно соответствует области вида
1, 0 0, 0
Их и посчитаем:K=0 for i in xrange(len(A)-1): for j in xrange(len(A[0])-1): # левый верхний угол квадрата 2x2 if (A[i][j],A[i+1][j],A[i][j+1],A[i+1][j+1])==(1,0,0,0): K+=1
Дополнение: не хватает «полей» справа и внизу, в начале текста вставим:A=[a+[0] for a in A] A.append([0]*len(a[0]))
- Решение: прямоугольник по условию однозначно соответствует области вида