[英]Why isn't my if/else statment working in my range? (python)
start = int(input("Enter your starting value "))
end = int(input("Enter your ending value "))
inc = int(input("Enter your increment value "))
inc = int(input("Enter your increment value "))
for j in range (start,end,inc):
if start > end:
print("Nothing to show here!")
else:
print(j)
而不是输出“这里没有什么可以显示的”,因为它应该。 它只是输出最终值,否则它工作得很好。 但我想知道为什么它没有 output 我的报价。
如果start
大于end
(并且inc
为正),则range
本身为空; 循环永远不会运行,因此永远不会执行测试并且不会发生print
。 如果你想要这样的测试,它需要在循环之外,例如:
if start > end:
print("Nothing to show here!")
else:
for j in range(start,end,inc):
print(j)
从技术上讲,当inc
为负数时这是错误的(当start > end
时会显示一些东西); 如果你需要处理这个(在某些情况下你可能知道inc
总是>= 1
),我可能只是简化为:
rng = range(start,end,inc)
if not rng: # Test if the range is empty
print("Nothing to show here!")
else:
for j in rng: # Iterate non-empty range
print(j)
发生这种情况是因为start
永远不会大于end
,即使增量超过end
的值。
例如:
for i in range(1, 10, 100):
print(i)
这个代码块只会运行一次并打印数字 1。这是因为 for 循环做了 3 件事。
首先,它将当前索引分配给给定的变量。 所以它执行i = 1
第二,它检查是否i < 10
。 在第一次迭代中,这是真的。 所以它打印1
第三,它增加i
。 这意味着在该迭代之后它执行i = 1 + 100
下一次迭代中的第三步盖过了第一步。 这意味着分配不会发生并且会执行递增。
这不起作用的另一个原因是range
的end
参数是独占的。 这意味着 for 循环在第二步中进行的检查不是<=
而是<
。 所以即使增量为 1, start
也永远不会有相同的end
值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.