Различия между версиями 10 и 11
Версия 10 от 2012-11-22 23:25:05
Размер: 4150
Редактор: FrBrGeorge
Комментарий:
Версия 11 от 2012-11-22 23:35:31
Размер: 4336
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 31: Строка 31:
   * [[attachment:2012-11-16.sort.py]]
Строка 34: Строка 35:
   * [[attachment:2012-11-16.binpoisk.py]]
Строка 58: Строка 60:
    * [[attachment:2012-11-16.summacifr-dumb.py]]
Строка 59: Строка 62:
    * [[attachment:2012-11-16.summacifr-nonr.py]]

Списки. Строковые методы (продолжение)

  • Списки, операции над ними
  • Списки как изменяемые типы данных:
    • Изменение элемента и секции
    • Имена объектов и счётчики ссылок
    • Мелкое копирование вида a[:] и глубокое копирование

    • Методы sort(),pop()/append(), count()

  • Строковые методы split() и join()

  • Другие полезные строковые методы: [r]find(), is…(), replace()

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

  1. {i} Прочитать про списки в учебнике

  2. Зайти на Online python tutor и пошагово посмотреть такую программу (обращаем внимание на то, как устроены ссылки на объекты):

       1 a = ["qwe", 42, [1.23, 4.56], "", 5]
       2 b = a
       3 c = a[:]
       4 print a is b, a == b, a is c, a == c
       5 print "a={0}\nb={1}\nc={2}\n".format(a, b, c)
       6 a[1]="TEST"
       7 print "a={0}\nb={1}\nc={2}\n".format(a, b, c)
       8 a[2][0]="FIX"
       9 print "a={0}\nb={1}\nc={2}\n".format(a, b, c)
    
  3. Ввести список натуральных чисел и отсортировать их по возрастающей (вручную :) )

  4. Ввести отсортированный список чисел и ещё одно число; проверить, содержится ли это число в списке (вручную :) )

    • функции input() можно скармливать что-то вроде range(1,100,3) — будет работать

    • Как можно воспользоваться свойством упорядоченности списка, чтобы уменьшить количество проверок?
    • 2012-11-16.binpoisk.py

  5. Отсортировать слова в строке (не вручную ;) )

    • Как-то
         1    s=raw_input()
         2    l=s.split()
         3    l.sort()
         4    s=" ".join(l)
         5    print s
      
    • В три строки:
         1    l = raw_input().split()
         2    l.sort()
         3    print " ".join(l)
      
    • <!> в одну строку с помощью функции sorted() (а не метода sort())

         1    print " ".join(sorted(raw_input().split()))
      
  6. <!> (ВМК) Ввести последовательность цифр (чисел от 0 до 9 по одному в строке), и вывести её в отсортированном виде

    • Что если последовательность очень длинная (вводится построчно, завершается -1 вместо цифры)?

  7. <!> (Брудно, Каплан) Ввести N и число, вывести все N-значные числа, сумма цифр которых равна заданному числу.

    • Для упражнения решить сначала при N==4
    • Должно приемлемо работать в ситуациях, когда ответ не очень длинный, например для 7, 20

    • А вот так мы будем уметь делать к концу учебного года: >:>

         1 N,S = input()
         2 def su(n,s):
         3     for i in xrange(max(0,2-n,s-(n-1)*9),min(9,s)+1):
         4         for a in n>1 and su(n-1,s-i) or [s-i]:
         5             yield i+a*10
         6 for num in su(N,S):
         7     print num
      

Условные обозначения

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

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

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

  • {*} — тема для самостоятельного изучения


CategoryClass CategoryVmsh

LecturesVMSH/Python/2012-11-16 (последним исправлял пользователь FrBrGeorge 2013-01-19 16:08:11)