如何使我的多重if语句工作?或者最好是如何在代码中使用嵌套循环

2024-04-25 14:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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单元格值:Johnny

名单很长,所以我在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

如你所见,它错过了很多。。。。你知道吗


Tags: ifvaluemaindefshowtablecellcol
2条回答

扩展我的评论:

打印新行之前,从不重置列。但这是一个最好的例子,不要重复自己-而不是写几乎相同的代码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))

这是两个嵌套循环,它们在输入上迭代,同时使用^{}自动计算各自的位置。你知道吗

请注意,^{}函数使用了两次:一次在换行(\n)上拆分以获得每一行,然后在每个单元格的制表符(\t)上拆分。你知道吗

因为这看起来很像一个csv文件,所以也可以看看csv-module。你知道吗

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

相关问题 更多 >