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

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

  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
      

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


CategoryClass CategoryVmsh

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