python - 嵌套while循环中不需要的输出
问题描述
我的提示:“编写一个程序,使用两个嵌套的 while 循环打印 3x3 网格(编号 1 到 3)的行和列,不包括沿对角线的单元格(即,行和列具有相同的值) . 程序输出的前三行应如下所示:
1 2
1 3
2 1
到目前为止,我已经很好地编码了它,但是我遇到了一个额外的不需要的输出。如何删除它?
row = 0
while row < 3:
col = 0
row += 1
while col < 3:
col += 1
if row == col:
col += 1
print (row, col)
预期结果应该是:
1 2
1 3
2 1
2 3
3 1
3 2
但也包括 3 4。
解决方案
(i, j)
只有当它们不相等时,您的 if 条件才应更改为打印。
i = 1
while i < 4:
j = 1
while j < 4:
if i != j:
print(i, j)
j += 1
i += 1
# 1 2
# 1 3
# 2 1
# 2 3
# 3 1
# 3 2
此外,我已经从 1 而不是 0 开始迭代,因为这对我来说看起来更有条理。
PS,更惯用的方法是使用列表理解。
[(i, j) for i in range(1, 4) for j in range(1, 4) if i != j]
# [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
推荐阅读
- checkbox - 为什么我的控制复选框没有被选中?
- java - 我的通用超类方法返回子类元素列表我如何在后代类中覆盖此方法以返回子类列表
- vaadin - 如何通过“camunda”或“flowable” bpm 来控制 UI(例如 Vaadin)?
- azure-functions - Azure函数:更新配置值抛出异常(未注册配置源。请在设置值之前先注册一个。)
- omnet++ - “ 错误:“在此上下文中不允许使用参数'map.net.xml'”,当我想在 sumo 中创建“.poly.xml”文件时”
- java - 使用 java.nio 时抛出 IllegalArgumentException
- r - 在 R 中重试 S3 读/写操作
- python - 我不知道我有什么版本的 Python,以及我的第一个网站的编码问题
- python - 如何从 Python 中的 Postsql 中提取时间成本解释
- java - 如何创建可变的 firebase 数据库名称?