如何使多个if语句起作用?或者最好在代码中如何使用嵌套循环

时间:2018-10-08 19:16:10

标签: python if-statement nested

我想做的是转换我的变量:

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列:2单元格值:Aleksandersen
  4. 行:1列: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 :(得分:2)

扩大我的评论:

在打印新行之前,您永远不会重置col。但这是一个不重复自己的典型例子-而不是重复编写几乎相同的代码4次,为什么不使用循环?

要重现您的输出,可以以此为起点:

*q = p; 

这是两个嵌套循环,它们在使用enumerate自动计数相应位置的同时遍历输入。

请注意,split函数已使用两次:一次在换行符(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)) )上拆分以获取每一行,然后在每个单元格的标签(\n)上拆分。< / p>

由于这看起来非常像一个csv文件,因此请查看csv-module

答案 1 :(得分:0)

您应该尝试嵌套的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)