Различия между версиями 5 и 6
Версия 5 от 2017-07-31 01:01:22
Размер: 6179
Редактор: ArsenyMaslennikov
Комментарий:
Версия 6 от 2018-06-28 20:27:16
Размер: 6171
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 41: Строка 41:
    else:
     print("No zeroes")
else:
    print("No zeroes")

Введение в последовательности; введение в строки

Хранимые последовательности

  • (строки, кортежи, списки)
    • индексирование, в т. ч. отрицательное
      • общий вид: выражение[индекс], где индекс начинается с 0

      • если индекс отрицателен, элементы отсчитываются от конца последовательности
        • a[-1] — последний элемент, a[-2] — предпоследний и т. п.

    • операции поэлементного сравнения
      • лексикографическое сравнение
    • операция is на примере списков

    • операции + и *

    • секционирование
      • обычное: выражение[начальный_индекс:конечный_индекс]

      • с шагом: выражение[начальный_индекс:конечный_индекс:шаг], в т. ч. с отрицательным шагом

      • умолчания: выражение[начальный_индекс:], выражение[:конечный_индекс], выражение[:] и всё то же самое с шагом ; если шаг отрицательный, умолчания для начала и конца меняются

    • {*} вывести начальный, средний и конечный элемент введённой строки

         1 s = input()
         2 print(s[0], s[len(s)/2], s[-1])
      
    • {*} вывести серединную секцию введённой строки (если количество элементов нечётное — из одного элемента,а если чётное — из двух)

         1 s = input()
         2 print(s,s[(len(s)-1)//2:(len(s)+2)//2])
      
    • {*} получить элементы, стоящие на 1,4,7, и т. д. местах (NB off by 1)

      • имеются в виду не первый/четвёртый, а [1]/[4]/...

      • a[1::3]

    • {i} сначала элементы, стоящие на нечётных местах, затем — на чётных, задом наперёд

  • цикл прохода по последовательности for
    • break, continue, else

    • {*} поиск 0

      •    1 li = eval(input())
           2 
           3 for element in li:
           4     if 0 == element:
           5         print("Eureka")
           6         break
           7 else:
           8     print("No zeroes")
        
    • {*} выбор максимума

      •    1 li = eval(input())
           2 
           3 max = li[0] if li else None
           4 for element in li[1:]:
           5     if max <= element:
           6         max = element
        

Вычисляемые последовательности

  • (range(), enumerate())

  • типичный for

  • {*} переписать на for факториал:

   1 N = int(input())
   2 Fact = 1
   3 for i in range(2,N+1):
   4     Fact *= i
   5 print(Fact)
  • {i} ввести последовательность чисел, вывести второй максимум — элемент, больше которого в последовательности только одно значение

    • например, для 1,1,2,2,7,7,3,3,5,5 второй максимум — это 5

Циклические конструкторы

  • Конструктор списка
  • Конструктор генератора, работа генератора, цикл for и генераторы
  • Как работает множественное связывание
    • распаковка последовательностей при связывании
    • в цикле for (последовательность последовательностей)
    • a,b,*c,d = "Qwertyuiop"

Кратко о строках

  • один символ — такая же целая строка, в отличие от, скажем, Pascal/C
  • +, *
  • "".format()

  • Q: А есть ли в Python разница между " и '?

    • A: Разницы нет никакой, кроме стилистической: хорошим тоном считается использовать для docstring двойные кавычки.
    • см. PEP 257 на эту тему

  • {i} Вывести все стороны и площади треугольников, стороны которых — однозначные положительные целые числа (не надо использовать конструктор, это жесть!)

    • использовать формулу Герона

    • не забыть, что 1 2 3, 1 3 2 и прочие перестановки — один и тот же треугольник, выводить один раз!

  • {i} вывести таблицу умножения от 1 до 12 (сначала без "".format(), потом (если успеете) с ним):

    •     1*1 = 1   2*1 = 2   3*1 = 3
          1*2 = 2   2*2 = 4   3*2 = 6
          ...
          1*12 = 12 2*12 = 24 3*12 = 36
          4*1 = 4   5*1 = 5   6*1 = 6
          4*2 = 8   5*2 = 10  6*2 = 12
          ...
          4*12 = 48 5*12 = 60 6*12 = 72
          7*1 = 7   8*1 = 8   9*1 = 9
          7*2 = 14  8*2 = 16  9*2 = 18
          ...
  • {i} Ввести строку, вывести, сколько в ней гласных (подсказка: c in "aeoiu" :) ), методами не пользоваться

  • {i} Ввести список запрещённых слов в формате "слово1","слово2",..., затем вводить строки до тех пор пока последняя не окажется пустой (это так же, как ввод до 0). Вывести, сколько строк содержали запрещённые слова

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