Starting from:

$25

ITI1120-Lab 8 (2D) Lists, Matrices and Files Solved

•            A      matrix   is     a     two dimensional rectangular  grid of    numbers:

é1 2 3ù

M=êê4 5 6úú êë7 8 9úû

•            The  dimensions of    the matrix   are the numbers      of    rows      and columns       (in   the above    case:       row dimension   3,    column dimension   3).

•            A      value     within    a     matrix   is referred       to    by   its   row and column indices, in    that        order.

–       Math:             number rows      and  columns       from      1,    from  upper    left corner

•            In     math notation,   M1,2 =     2

–       In      Python, matrices       are  implemented     via  2D   lists and  indices  start       from      0,    as  they       do   in    (1D)       lists.

•            Thus,      M[0][1] is 2

Matrix element  processing
•          To visit  every    element of an array,    we    had to use   a   loop.

•          To visit  every    element of a   matrix, we    need to use   a   loop inside a   loop:

–    Typically the     outer loop   goes  through each  row    of  a matrix

–    And     the     inner loop goes  through  each column   within     one row    of  a   matrix.

Intro to   matrices   in python and programming   exercises 1   to 5  
Open a    file called  basics-2Dlists.py   and     spend time    studying   all   the matrix functions  there.        

The   open   the file called      basics-2Dlists-todo.py    and    implement     (and    test)    the 5    functions  labeled     as    programming exercise    1    to  5          in   that     file.      

Two  notes  about  exercises  2    and    5:

•           Q2:    For clarification   of     programming exercise    2    see     the next    page

•           Q5:    In   programming exercise     5,   try to  find     a    solution     that     does    not create any     extra   list.      Or  even    better,     find     two     solutions, one     that     creates     an  extra   list     and     one     that     does    not

Details about  Prog Ex 2
Find the   sum  of the   upper   triangle of a   square matrix (i.e. the   diagonal   and   up).

0              1    2     3     4

1              4    5    3    2 0 How do we know if an element of a square 6    3    6    4    6 1 matrix is on or above the main diagonal?

 M   =       4    3    6    7    2  2 3    4    2    2    4  3
row_index <= 
                                                         2    3    8    3    5                            4                   column_index

Programming exercise    6  :   Magic square
An     n x n matrix    forms  am    magic square if    the following    conditions      are met     

1.The      elements  of  the matrix    are numbers  1,   2,   3,   …,  n2

2.The      sum     of  the elements    in   each    row,    in   each    column     and     in   the two    diagonals is   the same   value https://en.wikipedia.org/wiki/Magic_square

Open magic.py  and     complete    the function   that     tests    if    the given   matrix m   forms  a    magic  square.     

Learn   how to   populating a  2D   list   from    a  file
View the content of    the file  called  alkaline_metals.txt

This  file  contains               the name,  atomic   number,       and atomic   weight  of    the alkaline earth     metals  separated    by   space.    Records about  different      metals   are  separated    by  new       line.               

The   goal       of    this exercise is     to    learn  how       to    write     a     Python  program  that        opens    and reads     that        file  and creates  and populates    a     2D   lists  with       the relevant       info about    the  6     alkaline metals.  Specifically   the  program       needs    to    have      a  function,      called  create_alctable(file_name),      that        given     a     string     representing  the name     of    the file  as    input,  opens    that        file, reads     it     and  returns  the following      2D   list:         

[['beryllium', 4, 9.012], ['magnesium', 12, 24.305], 

['calcium', 20, 20.078], ['strontium', 38, 87.62], ['barium', 

56, 137.327], ['radium', 88, 226.0]]

Open       working-with-files.py,     that  solves    this problem.      Press     Run  Module.       When    prompted    for  the  file  name     enter: alkaline_metals.txt

Study       what      the program       prints  and the solution code.     The printouts  should   elp you  understand the code.

You   will need      to    do   something  similar   in    the next       programming  exercise of    this lab  and in    your  Assignment 4.

Programming  exercise 7: NY   times bestsellers
For    this you are  provided      with       2  files NY_short.txt and NY_long.txt each  containing   list  of    New       York       Times  for  some     years.    Each      line in    a  file  contains       the information for  a  separate       book,     which    includes: title,  author,  publisher,    date       it     first  reached #1   on   one of    the best       seller  lists,       and category       (fiction  or  nonfiction). There     is     a     tab  character  between      each      of    these     pieces    of  information.

For    this exercise you will first write     a  function  create_books_2Dlist(file_name) that  opens    the file, reads     it     and returns  a  2D   lists containing   a     sublist with  the  info about    each      book.     For example  here       is     the beginning     of    required  2D   list. See the next       page      for  what  the whole    list  should   look       like for

[['1976-04-11', '1876', 'Gore Vidal', 'Random House', 'Fiction'], … ] Note  that        within    each      (sub)list about    a  book,     the first element       should   be   a  string     contaning the     date       in    iso format

YYYY-MM-DD
Finally      you should   write     a     function  called  search_by_year(books,year1,year2) that  given     a     2D   list  of    books    in  the above    format  prints    all   the  bestsellers   from      year       

1 to    year2.    See example       runs       on  the next       2     pages    for  NYT_short.txt

While       working use NYT_short.txt. Once  you are  done             you can test your  program       with       NYT_long.txt.     

Programming  exercise  7:  example runs
 

Programming   exercise     7: example   runs

Below    the books argument is   the  2D lists     from    the previous   slide

 

EXTRA   programming exercise    (Back    to 1D lists)
Write         a        function    called         move_zeros that          takes          as      input          list     of      integers     and             moves        all      the    zeros          in       that  list     to          the    end   of      the    list     (without    affecting   the          relative      order         of      other          numbers). For          example,   if        the    list     was   [1,     0,       

3,       0,       0,       5,       7]      the    new  changed    list     should          be     [1,     3,       5,       7,       0,       0,       0]

•Write        THREE        different   solutions   (Version    3        is          challenging)

–         move_zeros_v1  should       create        a        second,  tmp, list     to      build the    result         (easier  problem)  and   return        that  2nd list.       It  should       not    change      the    given          list.

–         move_zeros_v2  modify       the    previous  question   so      that  the    given          list     IS  modified   Inside         of      the    function    (i.e.   its  zeros          are    at      the    end) .         This  function    returns      nothing.

–         move_zeros_v3  You   may  change      the    relative  order         of      other          elements   here.  This  version      should       be     moving  elements   in       the    same          list               without  creating     any   additional lists   (so    called,        in-place, solutions).          (harder      problem)  This  function    returns      nothing.    You   can   use  one   extra variable     to      store one   integer  but    even that  is       not    necessary since in  Python      you   can   swap what variables   a and  b refer     to      by     doing         a,b=b,a  For  both problems  the    TAs   will    first   discuss  algorithmic         approaches        to      solve the  problems  

x = [1, 0, 3, 0, 0, 5, 7] 

y=move_zeros_v1(x)

print(x, y)

[1, 0, 3, 0, 0, 5, 7] [1, 3, 5, 7, 0, 0, 0]

x = [1, 0, 3, 0, 0, 5, 7] 

z=move_zeros_v2(x)

print(x, z)

[1, 3, 5, 7, 0, 0, 0] None

x = [1, 0, 3, 0, 0, 5, 7] 

t=move_zeros_v3(x)

print(x, t)

[1, 7, 3, 5, 0, 0, 0] None

More products