Условные операторы и циклы

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

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

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

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

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

  1. Прочитать в учебнике Первые шаги к программированию и Дополнительные средства управления порядком выполнения

  2. Сгенерировать список кубов натуральных чисел в диапазоне от 1 до 10
    •  [i*i*i for i in xrange(10)] 

  3. Сгенерировать список списков вида

      1 2 3 4  
      1 2 3 4
      1 2 3 4 

    а затем транспонировать его, т. е. привести в вид

      1 1 1
      2 2 2
      3 3 3
      4 4 4 
    Решение:
    Table=[range(1,5) for i in xrange(3)]
    TTable=[[Table[i][j] for i in xrange(len(Table))] for j in xrange(len(Table[0]))]

    Вопрос: почему неправильно range(1,5)*4?

  4. Сгенерировать список списков вида

      1  2  3  4
      5  6  7  8
      9 10 11 12 
    и проверить, правильно ли работает транспонирование из предыдущего примера :)
      Table=[range(i*5+1, (i+1)*5+1) for i in xrange(3)] 
  5. Сгенерировать список строк размера N✕N вида

      *....
      .*...
      ..*..
      ...*.
      ....* 
    и вывести как показано в примере (без кавычек и запятых)
      N=10
      Diag=["."*i+"*"+"."*(N-i-1) for i in xrange(N)]
      for s in Diag:
          print s
  6. Упорядочить числа в строке вида "число1/число2/число3/..."

    s="2/5/2/78/2/76/2/76/1/6/23/76/7"
    L=[int(c) for c in s.split("/")]
    L.sort()
    r="/".join([str(n) for n in L]) 
  7. Найти второй максимум среди элементов списка
    • M2 ∈ списку L:
    • M2 == L[0], если L[i]==L[k] ∀ i,k, т. е. все элементы списка L равны
    • L[i] ⩽ M2 < M ∀ i: L[i]<M, где M=max(L), т. е. M2 не меньше любого элемента списка, кроме максимума

    M=M2=Arr[0]
    for e in Arr:
        if e>M:
            M2,M=M,e
        elif e<M:
            if e>M2:
                M2=e 


CategoryClass CategoryVmsh

LecturesVMSH/2010-10-27 (last edited 2010-11-03 09:50:35 by FrBrGeorge)