python - 如何使我的多个 if 语句起作用?或者最好如何在我的代码中使用嵌套循环
问题描述
我想做的是转换我的变量:
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 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。
推荐阅读
- grid - qliksense 中的响应式网格在小部件扩展中不起作用
- python - 使用 Accurate Scheduler 模拟时间序列事件
- java - 具有水平滚动标题的 HeaderListView
- pinterest - 使用 Pinterest Marketing api 获取所有实体?
- java - BigInt 对象的“add”方法异常
- r - 长格式的时间序列数据,合并特定行时间点,同时忽略每个参与者的其他时间点
- python - Visual Studio Code 无法正确引用虚拟环境中的包
- ads - 在华为快应用上请求原生广告时出现“字符串错误”
- google-apps-script - 使用脚本在 Google 表格中发送一张表格不起作用
- python - 使用 keras 进行 RNN 的三元组网络