为什么我的 if/else 语句在我的范围内不起作用?(Python)

-2 python if-statement range python-3.x

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)
Run Code Online (Sandbox Code Playgroud)

而不是输出“这里没有什么可显示的!” 正如它应该的那样,它只是输出最终值。否则它工作得很好,但我想知道为什么它不输出我的报价。

Sha*_*ger 5

如果start大于end(且inc为正),则range本身为空;循环永远不会运行,因此永远不会执行测试,print也不会发生。如果你想要这样的测试,它需要在循环之外,例如:

if start > end:
    print("Nothing to show here!")
else:
    for j in range(start,end,inc):
        print(j)
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这是错误的 wheninc是负数(当 时会有东西显示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)
Run Code Online (Sandbox Code Playgroud)

  • @CosmicSaturn - 如果第一部分适合您,您可能还想验证“inc”。也许 `if start > end or inc <= 0:` 这也会停止负增量。 (2认同)