Различия между версиями 15 и 16
Версия 15 от 2017-07-31 00:47:33
Размер: 8756
Редактор: ArsenyMaslennikov
Комментарий:
Версия 16 от 2018-06-28 17:41:27
Размер: 8743
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 230: Строка 230:
Was = False

Введение в язык; логика, циклы, управление

  • понятие о модулях, from math import *

  • {i} ручное развёртывание бинарного возведения в степень (например, как получить 321?)

  • {i} вычисление формул

Условные операторы и выражения

  • логический тип, операции сравнения
  • условное выражение a if b else c

  • базовый if

  • форматирование отступами
  • if / elif* / else

  • Задания
    • {*} ввести два числа, вывести наибольшее

      • условным выражением

      • условным оператором

           1  a = int(input())
           2  b = int(input())
           3 
           4  print(a if a>b else b)
           5 
           6  if a>b:
           7      print(a)
           8  else:
           9      print(b)
        
    • {*} ввести два числа, вывести, больше, меньше или равно первое второму

         1  a = int(input())
         2  b = int(input())
         3 
         4  if a>b:
         5      print("a>b")
         6  elif a==b:
         7      print("a==b")
         8  else:
         9      print("a<b")
      
    • {*} ввести три числа, проверить неравенство треугольника (вложенный if)

         1  a = float(input())
         2  b = float(input())
         3  c = float(input())
         4 
         5  if a + b <= c:
         6      print('false')
         7  elif a + c <= b:
         8      print('false')
         9  elif b + c <= a:
        10      print('false')
        11  else:
        12      print('true')
      
    • {i} ввести три числа, найти наибольшее (вложенный if)

         1  a = float(input())
         2  b = float(input())
         3  c = float(input())
         4 
         5  if a>b:
         6      if a>c:
         7          print(a)
         8      else:
         9          print(c)
        10  else:
        11      if b>c:
        12          print(b)
        13      else:
        14          print(c)
      

Алгебра логики

  • пустой объект, примеры (0, '', [], None и т. п.)

    • Пустой объект — «ложь», непустой объект — «истина»
    • любое выражение в условии

         1   n = 10
         2   s = input("Введите число или пустую строку для значения",n,"по умолчанию: ")
         3   if s:
         4       n = int(s)
      
  • таблицы истинности, пример для OR и AND:
    • OR:

      A

      B

      A or B

      False

      False

      False

      False

      True

      True

      True

      False

      True

      True

      True

      True

    • AND:

      A

      B

      A and B

      False

      False

      False

      False

      True

      False

      True

      False

      False

      True

      True

      True

  • логические операции Python, их таблицы истинности
    • частичное вычисление выражений A и B:
      • OR: если A истинно, результат истинен, вычислять B не надо
        • ⇒ Python: если A истинно, результат равен A, иначе B

      A

      B

      A or B

      Пусто

      Пусто

      B

      Пусто

      Непусто

      B

      Непусто

      Пусто

      A

      Непусто

      Непусто

      A

      • AND: если A ложно, результат ложен, вычислять B не надо
        • ⇒ Python: если A ложно, результат равен A, иначе B

      A

      B

      A and B

      Пусто

      Пусто

      A

      Пусто

      Непусто

      A

      Непусто

      Пусто

      B

      Непусто

      Непусто

      B

  • пример работы or и and

    • >>> 123 and 456
      456
      >>> "" and (1,2,3)
      ''
      >>> False and None
      False
      >>> False or 100500
      100500
      >>> [] or False
      False
      >>> 123 or 456
      123
      >>> "QQ" or 0
      'QQ'
      >>> 0 and 1
      0
  • {*} ввести три числа, проверить неравенство треугольника (с помощью or)

    •    1 a = float(input())
         2 b = float(input())
         3 c = float(input())
         4 
         5 if a+b<c or a+c<b or b+c<a:
         6     print("Not triangle:",a,b,c)
         7 else:
         8     print("Triangle:",a,b,c)
      
  • {i} квадратное уравнение с ненулевым a

  • {i} условные формулы №57

Цикл while

  • каноническая схема цикла:
    1. инициализация объектов, участвующих в условии

    2. проверка условия

    3. тело

    4. изменение объектов, участвующих в условии

  • {*} Вводить последовательность ненулевых целых, которая заканчивается нулём, вывести сумму положительных элементов этой последовательности

       1 A = int(input())     # Первый ввод
       2 Sum = 0              # Инициализация Sum
       3 while A:             # Условие (А != 0)
       4     if A>0:          #
       5         Sum += A     #
       6     A = int(input()) # Все последующие вводы — изменение
       7 print(Sum)
    
  • цикл по вводу: первый ввод — инициализация, все последующие — изменение
    • {*} пример: подсчёт произведения (ввод до 0)

    •    1   prod = 1
         2   mult = int(input())       # Инициализация
         3   while mult:               # Проверка условия
         4       prod *= mult          # Тело
         5       mult = int(input())   # Изменение
         6   print(prod)
      
  • {*} сумма N элементов арифметической прогрессии (циклом)

       1 A0, Step, N = 10, 2, 10
       2 
       3 Sum, A, Count = 0, A0, 0    # Инициализация Count
       4 while Count<N:              # Проверка условия
       5     Sum += A                # Тело
       6     A += Step               #
       7     Count += 1              # Изменение
       8 
       9 print(Sum)
    
  • {*} факториал

       1 N = 7
       2 
       3 Fact, Mul = 1, 1            # Инициализация Count
       4 while Mul<=N:               # Проверка условия
       5     Fact *= Mul             # Тело
       6     Mul += 1                # Изменение
       7 
       8 print(Fact)
    
  • {i} с какого элемента сумма арифметической прогрессии превысит N?

  • {i} таблица умножения на N (в столбик)

  • {i} подсчёт среднего (ввод до 0)

Циклы (более сложные случаи)

  • условия внутри циклов, break, continue

  • {*} одновременный подсчёт суммы и произведения положительных чисел (используется continue для отрицательных)

       1 A = int(input())
       2 Sum, Mul = 0, 1
       3 while A:
       4     if A<0:
       5         continue
       6     Sum += A
       7     Mul *= A
       8     A = int(input())
       9 print(Sum, Mul)
    
  • поиск первого, else для обхода завершения по break

  • {*} ввести ненулевые числа, проверить, есть ли среди них отрицательные

    • без else (с break)

   1 A = int(input())
   2 Was = False
   3 while A:
   4     if A<0:
   5         Was = True
   6         break
   7     A = int(input())
   8 
   9 if(Was):
  10     print("Отрицательные были")
  11 else:
  12     print("Отрицательных не было")
  • с else

   1 A = int(input())
   2 while A:
   3     if A<0:
   4         print("Отрицательные были")
   5         break
   6     A = int(input())
   7 else:
   8     print("Отрицательных не было")
  • вложенные циклы
  • {*} большая таблица умножения в столбик

    •    1  i = 1
         2  while i<=10:
         3      j = 1
         4      while j<=10:
         5          print(i,"*",j,"=",i*j)
         6          j += 1
         7      i += 1
      
  • {i} таблица умножения в виде матрицы по столбцам (без форматирования)

Python/Summer2017/2017-07-04 (последним исправлял пользователь FrBrGeorge 2018-06-28 17:41:27)