Различия между версиями 2 и 12 (по 10 версиям)
Версия 2 от 2010-11-03 11:37:25
Размер: 1216
Редактор: FrBrGeorge
Комментарий:
Версия 12 от 2010-11-10 00:08:33
Размер: 4830
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 6: Строка 6:
<<Include(VMSHClassTemplate/Legend,,from="##begin class legend##",to="##end class legend##")>>
Строка 7: Строка 8:
<<Include(VMSHClassTemplate/Legend,,from="##begin class legend##",to="##end class legend##")>>
 
* Интерпретация выражений в терминах «истина-ложь», нулевой элемент класса
  * Использование произвольных выражений в условных операторах и операторах цикла
  * Логческие операции `AND` `OR` `NOT` и их особенность в Python:
    Пример: AND
    || A || B || результат ||
  || нулевой || произвольное || A (B не вычисляется) ||
    || ненулевой || произвольное || B ||
  * `input()`
 * Интерпретация выражений в терминах «истина-ложь», нулевой элемент класса
 * Использование произвольных выражений в условных операторах и операторах цикла
 * Логческие операции `AND`, `OR`, `NOT` и их особенность в Python:
   Пример: AND
   || A || B || результат ||
   || нулевой || произвольное || A (B не вычисляется) ||
   || ненулевой || произвольное || B ||
 * `input()`
 * На плоскости ХОY задана своими координатами точка А. Указать, где она расположена (на какой оси (осях)). Принадлежность к оси считать с точностью 1e-5.
Строка 20: Строка 21:
  1. {i} Доказать, что логические операции Python эквивалентны классическим логическим операциям
  1. Второе
 1. {i} Доказать, что логические операции Python эквивалентны классическим логическим операциям
 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))}}}
 1. Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц — В руб., а разговоры сверх установленной нормы оплачиваются из расчета С руб. за минуту (A, B, C -- вещественные числа, даны). Вычислить X — плату за пользование телефоном в прошлом месяце, если за него было потрачено T минут разговоров.
    {{{
    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])) }}}

Логические выражения

  • {o} — тема по Linux

  • <!> ­— необязательная тема

  • Интерпретация выражений в терминах «истина-ложь», нулевой элемент класса
  • Использование произвольных выражений в условных операторах и операторах цикла
  • Логческие операции AND, OR, NOT и их особенность в Python:

    • Пример: AND

      A

      B

      результат

      нулевой

      произвольное

      A (B не вычисляется)

      ненулевой

      произвольное

      B

  • input()

  • На плоскости ХОY задана своими координатами точка А. Указать, где она расположена (на какой оси (осях)). Принадлежность к оси считать с точностью 1e-5.

Домашнее задание

  • {i} — теоретическое задание

  • {*} — новая тема

  1. {i} Доказать, что логические операции Python эквивалентны классическим логическим операциям

  2. Присвоить логической переменной 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))
  3. Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц — В руб., а разговоры сверх установленной нормы оплачиваются из расчета С руб. за минуту (A, B, C -- вещественные числа, даны). Вычислить X — плату за пользование телефоном в прошлом месяце, если за него было потрачено T минут разговоров.
    •     X = B + (T > A and (T - A)*C or 0)
  4. Имеется прямоугольный лист клетчатой бумаги размера 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])) 


CategoryClass CategoryVmsh

LecturesVMSH/2010-11-03 (последним исправлял пользователь FrBrGeorge 2010-11-10 00:08:33)