x和y是两个整数:的Python:会是什么范围内的输出中(X,Y),如果X> Y
如何range(x,y)
这样x>y
将在Python考虑?
我试图在两个蟒2.7和python 3.3以下代码:
for i in range(10,3):
print i
我想范围(10,3)应被视为列表[0,3,6,9],但这个代码部没有渲染任何东西。
x和y是两个整数:的Python:会是什么范围内的输出中(X,Y),如果X> Y
如何range(x,y)
这样x>y
将在Python考虑?
我试图在两个蟒2.7和python 3.3以下代码:
for i in range(10,3):
print i
我想范围(10,3)应被视为列表[0,3,6,9],但这个代码部没有渲染任何东西。
你有两个选择:
重新输入值,
range(0, 10, 3) # => (0, 3, 6, 9)
编写一个包装函数重新安排他们为你:
def safe_range(a, b):
return range(0, max(a,b), min(a,b))
safe_range(3, 10) # => (0, 3, 6, 9)
编辑:经过多思考后,我明白了;你试图做类似
range({start=0,} stop, step)
,但如果你只给两个值是没有办法告诉和
range(start, stop, {step=1})
之间的差异要解决这种不确定性,即默认 - Python语法要求值参数只能出现在所有位置参数之后 - 也就是说,第二个示例是有效的Python,第一个不是。
的3210的签名是
范围(启动,停止[步骤])
range(10, 3)
套分别开始和停止至10和图3,,因此如果您会提供步骤的说法,您需要提供开始论点:
In [1]: range(0, 10, 3) # list(range(0, 10, 3)) in Python3+
Out[1]: [0, 3, 6, 9]
的步骤的默认值是1和(引用的文档页面我以前的链接)
对于正步骤,范围r的内容由式- [R [I] =确定启动+步骤* I其中I> = 0和- [R [I] <停止。
range(10, 3)
为空,因为- [R [I] <停止是从一开始假(R [0]是 + 1 * 0 = 10和10大于3)。
也添加了答案:“但这部分代码没有渲染任何东西。” (关于 - 我们在做什么) – 2015-02-09 15:57:39
range()
只有两个参数将这些参数解释为start
和stop
。从range()
function documentation:
range(stop)
range(start, stop[, step])
注意[, step]
是第二种形式可选。通过提供小于或等于start
的stop
,而将step
保留为默认1
,您创建了一个空范围。该文档包括这种情况下,明确地为给出的一个例子:
>>> range(1, 0)
[]
的Python 3 version of the documentation是一个小更明确的还是:
Range对象将是空的,如果
r[0]
不满足值约束。
如果你想提供一个step
值,你有指定开始:
for i in range(0, 10, 3):
的Python拒绝猜测这里;对于start
和stop
参数都使用变量的合法用法,其中给定算法的某些运行时,停止值结束等于或低于开始;此类代码预计range()
在这种情况下为空。
好吧,我已经忘记了第二个范围()签名中的可选步骤,非常感谢你@Martjin – mounaim 2015-02-09 16:18:01
默认情况下,步长为1,那么如何添加10到3? – 2015-02-09 15:55:59
我认为开始是0,并在这里考虑为3但我认为我忽略了参数的顺序 – mounaim 2015-02-09 15:58:16
你应该阅读文档 - 检查['范围(开始,停止[,步骤])'](https:// docs .python.org/2 /库/功能。html#range) – 2015-02-09 16:00:10