【发布时间】:2021-12-18 21:16:38
【问题描述】:
我正在尝试创建一个打印带有标记轴的板的函数。这是我打印 y 轴的代码。
y = [-1, 4]
y_axis = range(y[0], y[1]+1)
for i in y_axis: # rows
print(y_axis[i])
这是我得到的输出:
4
-1
0
1
2
3
为什么它不从 y[0] 开始并以整数递增直到 y[1]+1 ?我认为这是 range() 函数的输出。 对于我的项目,我需要这段代码来输出以下内容:
4
3
2
1
0
-1
我不明白如何获得我想要的结果,我已经尝试了好几个小时!非常感谢任何帮助,谢谢
编辑:棘手的部分是这应该能够以正确的顺序打印任何类型的范围:如果我使用负步骤,它可能无法对所有正值等正常工作 像这样的方法不起作用: -1 -> 4: 范围(y[0], y[1]+1) 4 -> -1: 范围(y[1], y[0]-1, -1)
我需要一个通用的解决方案。它可能与 enumerate() 函数有关吗?
【问题讨论】:
-
print(i)而不是print(y_axis[i]) -
如果你想让
range()产生一个降序序列,你必须传递一个可选的第三个参数(step)一个负值。 -
^正确。您也使用范围的值作为范围的索引。
-
另请注意,您需要 not_speshal 和 jasonharper 的 cmets 中的修复程序才能获得所需的输出 - 这不是非此即彼。
-
为了清楚起见:得到-1 -> 4:
range(y[0], y[1]+1),得到4 -> -1:range(y[1], y[0]-1, -1)
标签: python for-loop indexing range