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

Posted

技术标签:

【中文标题】如何使我的多个 if 语句起作用?或者最好如何在我的代码中使用嵌套循环【英文标题】:How can I make my multiple if statements work? Or preferably how do I use nested loops in my code 【发布时间】:2019-03-13 12:08:51 【问题描述】:

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

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

变成这样的一种方案:

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

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

【问题讨论】:

在打印新行之前,您永远不会重置 col。但这是不要重复自己的一个典型例子 - 与其编写几乎相同的代码 4 次,为什么不使用循环? 搜索任何关于for循环的基础教程。 ***.com/questions/1185545/… 【参考方案1】:

扩展我的评论:

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

【讨论】:

谢谢,我试试看。 我添加了一些提示,也许它们可以帮助您进一步改进您的解决方案。 谢谢,非常感谢!【参考方案2】:

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

【讨论】:

以上是关于如何使我的多个 if 语句起作用?或者最好如何在我的代码中使用嵌套循环的主要内容,如果未能解决你的问题,请参考以下文章

如何使我的代码诊断语法节点操作对关闭的文件起作用?

如果消息以前缀 + 使用 discord.js 的命令开头,如何使 if 语句起作用

快速排序模板不起作用,并使我的程序无响应

Powershell If then 语句不起作用。如何修正逻辑? [复制]

IF 语句:如果条件为假,如何将单元格留空(“”不起作用)

.onAppear() 中的多个语句不起作用