Как я могу сделать мой множественный, если заявления работают?Или желательно, как я могу использовать вложенные циклы в моем коде - PullRequest
0 голосов
/ 08 октября 2018

То, что я хочу сделать, это преобразовать мою переменную:

table = "female\tIngelin\tAleksandersen\nmale\tJohnny\tDigre\nmale\tOsman\tBremseth\nfemale\tCathrine\tDagestad\nfemale\tTirill\tBakker"

В такую ​​схему, как эта:

  1. Строка: 0 Кол: 0 Значение ячейки: женский
  2. Строка: 0 Col: 1 Значение ячейки: Ingelin
  3. Строка: 0 Col: 2 Значение ячейки: Aleksandersen
  4. Строка: 1 Col: 0 Значение ячейки: мужской
  5. Строка: 1 Кол .: 1 Значение ячейки: Джонни

Список длинный, поэтому плохо остановлюсь на 5, но вы получите точку.Мой код на данный момент:

table="female\tIngelin\tAleksandersen\nmale\tJohnny\tDigre\nmale\tOsman\tBremseth\nfemale\tCathrine\tDagestad\nfemale\tTirill\tBakker"

def show_table():
    print(table)

def show_every_cell():
    col = -1
    row = -1
    names = table.split("\t")
    for x in names:
        row += 1
        if row == 0:
            col += 1
            if col == 0:
                print('Row: 0 Col: 0 ' + 'Cell value: ' + x)
            if col == 1:
                print('Row: 0 Col: 1 ' + 'Cell value: ' + x)
            if col == 2:
                print('Row: 0 Col: 2 ' + 'Cell value: ' + x)

        if row == 1:
            col += 1
            if col == 0:
                print('Row: 1 Col: 0 ' + 'Cell value: ' + x)
            if col == 1:
                print('Row: 1 Col: 1 ' + 'Cell value: ' + x)
            if col == 2:
                print('Row: 1 Col: 2 ' + 'Cell value: ' + x)

    #The list continues with row: 2, 3 and 4. But no point in showing that part. 

def main():
    show_table()
    show_every_cell()

if __name__ == "__main__":
    main()

Мой вывод такой:

Row: 0 Col: 0 Cell value: female
Row: 1 Col: 1 Cell value: Ingelin

Как видите, он очень много пропускает ....

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы должны попробовать вложенный цикл for....

for x in names:
   for row in range(number_of_rows):
      for col in range(number_of_cols):
         print('Row: ' + row + 'Col: ' + col + 'Cell value: ' + x)
0 голосов
/ 08 октября 2018

Расширение моего комментария:

Вы никогда не сбрасываете col, прежде чем печатать новую строку.Но это яркий пример того, что не повторяйте себя - вместо того, чтобы писать почти идентичный код 4 раза, почему бы не использовать циклы?

Чтобы воспроизвести ваш вывод, вы можете использовать это как отправную точку:

for rowno, row in enumerate(table.split("\n")):
    for colno, cell in enumerate(row.split("\t")):
        print("Row: {}, Col: {}, Cell value: {}".format(rowno, colno, cell))

Это два вложенных цикла, которые перебирают входные данные при использовании enumerate для автоматического подсчета соответствующей позиции.

Обратите внимание, что split функция используется дважды: один раз для разделения на новые строки (\n) для получения каждой строки, затем для разделения на вкладки (\t) для каждой ячейки.

Поскольку это очень похоже наCSV-файл, также посмотрите на CSV-модуль .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...