首页 > 解决方案 > 如何使我的多个 if 语句起作用?或者最好如何在我的代码中使用嵌套循环

问题描述

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

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

变成这样的一种方案:

  1. 行:0 列:0 单元格值:女性
  2. 行:0 列: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

如你所见,它错过了很多......

标签: pythonif-statementnested

解决方案


扩展我的评论:

在打印新行之前,您永远不会重置 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-module


推荐阅读