Ҷадвалҳо ҳамчун рӯйхати рӯйхатҳо: a[i][j], сохтани ҷадвал ва чаро [[0] * m] * n нодуруст аст, хондан ва чоп, сатрҳо, сутунҳо ва диагоналҳо, гардонидан ва инъикос, мор ва спирал.
Назария
Дарси 1 аз 7
Хониш: 17 дақиқа
Саволҳо: 5
Ҷадвал рӯйхати рӯйхатҳост
Дар дарси даврҳои дохили ҳам даврҳои шумо ҷадвалҳоро чоп мекарданд. Аксар вақт ҷадвал вуруд аст: фурӯши қаҳвахона барои ҳар рӯз ва ҳар нӯшокӣ, баҳои ҳар хонанда аз ҳар фан, катакчаҳои тахтаи бозӣ. Барои нигоҳ доштани тамоми ҷадвал рӯйхати рӯйхатҳо истифода мебарем. Ҳар ҷузъи рӯйхати калон як сатр аст ва сатр рӯйхат аст.
Аввал сатр, баъд сутун. Инро бо овоз такрор кунед, то ба ёд монад. len(a) шумораи сатрҳост ва len(a[0]) дарозии як сатр, яъне шумораи сутунҳост. Дар ин курс шумораи сатрҳо n ва шумораи сутунҳо m мебошад.
Дар лабораторияи поён тугмаҳоро пахш кунед. Ҳар тугма як сатри Python аст. Ададҳоеро, ки мепурсад, пайдо кунед.
Катакчаро ёбедсанҷида бин!
навбатӣ
Сатрҳо, сутунҳо, диагоналҳо
Гузаштан аз ҷадвал: ҷамъи ҳар сатр ва ҳар сутун, калонтарин катак ва ҷойи он, диагонал, ҷадвали симметрӣ ва чопи ҷадвал гардонидашуда, инъикосшуда ё зигзагӣ.
Аксар вақт ададҳо ҳоло нестанд. Ҷадвали холии n сатр ва m сутун лозим аст, масалан пур аз сифр, ва шумо онро баъд пур мекунед. Ин аст қолаби он. Онро ҳамон тавр ёд гиред:
Онро ин тавр хонед: «[0] * m-ро боз ва боз созед, n бор, ва сатрҳоро дар рӯйхат ҷамъ кунед». Тағйирёбандаи давр _ ном дорад, чунки ҳеҷ ҷо истифода намешавад. (Ин сохтани рӯйхат дар як сатр аст: давр, ки дар дохили қавсҳои рӯйхат навишта мешавад. Бештар дар бораи он дар Намунаҳои кор бо рӯйхат хонед.)
Ҳамин фикр як қадам пештар меравад. Рӯйхати ҷадвалҳо рӯйхати сеандоза аст, он бо ҳамин қолаб ду бор сохта мешавад: [[[0] * m for _ in range(n)] for _ in range(k)]. Он гоҳ c[t][i][j] ҷадвали t, сатри i, сутуни j аст. Ҷадвалҳои дуандоза аз ҳама бисёртар вомехӯранд.
Доми хато: [[0] * m] * n
Хати кӯтоҳтаре ҳаст, ки ҳамин тавр менамояд: [[0] * m] * n. Он нодуруст аст ва маъмултарин хатои ҷадвал дар Python мебошад. Бубинед, ки он чӣ мекунад:
Дар ҷадвали аввал як катакча тағйир ёфт, чунон ки мехостем. Дар ҷадвали дуюм тағйир дар сатри 0 дар сатри 1 ҳам пайдо шуд! Сабаб: [0] * 3як бор сохта мешавад ва * 2 ду сатр намесозад. Он ҳамон як сатрро ду бор ба рӯйхат мегузорад. Ду ҷузъ ду номи як рӯйхатанд. Агар ба як сатр нависед, дар ҳарду сатр пайдо мешавад.
Дар лаборатория қадам ба қадам равед. Бубинед, ки ҳар ном ба кадом корт овезон аст ва катакчаҳои рӯйхати калон ба куҷо ишора мекунанд.
Як сатр ё ду сатр?санҷида бин!
Қолаби [[0] * m for _ in range(n)] барои ҳар сатр [0] * m-ро аз нав иҷро мекунад, барои ҳамин ҳар сатр рӯйхати нав аст. Ҳар дафъа ҳамин қолабро истифода баред.
Ҷадвалро бихонед ва чоп кунед
Вуруд одатан дар хати аввал n ва m-ро медиҳад ва баъд худи ҷадвалро, барои ҳар сатр як хат. Ҳар хатро ҳамчун як сатр бихонед:
Вуруд
Баромад
Роҳи кӯтоҳтар, ки онро вақте истифода бурдан мумкин аст, ки аз он боварӣ доред, ҳамаи сатрҳоро дар як ифодаи сохтани рӯйхат мехонад. Python имкон медиҳад, ки хат дар дохили қавсҳо шикаста шавад, барои ҳамин хати дароз дар он ҷо бурида мешавад:
Барои чоп кардани сатр дар як хат print(*row)-ро истифода баред. Шарти масъала мегӯяд, ки байни ададҳо фосила лозим аст ё не.
Ду даври дохили ҳам катакчаҳоро сатр ба сатр мегарданд: аввал тамоми сатри 0, баъд тамоми сатри 1. Агар гузаришҳоро аз 0 шуморем, гузариши рақами k катакчаи сатри k // m ва сутуни k % m аст. Ҷадвалро бо m = 4 сутун гиред. Гузариши 6 сатри 1, сутуни 2 аст. Инро дар ҷадвал санҷед:
Шарти масъала одатан сатрҳо ва сутунҳоро аз 1 мешуморад. Катакчаи (r, c)-и шарт дар Python a[r - 1][c - 1] аст.
Як катакча, як сатр, як сутун
Вақте ҷадвал дар a аст, ҳар катакча як нигоҳ аст. Инҳо катакчаҳое мебошанд, ки аз ҳама бештар лозим мешаванд: