为什么我的if/else语句在我的范围内不起作用?(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)

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

回答

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

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

从技术上讲,这是错误的 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)

  • @CosmicSaturn - if the first part works for you, you may want to validate `inc` also. Perhaps `if start > end or inc <= 0:` which would also stop a negative incrment.

以上是为什么我的if/else语句在我的范围内不起作用?(Python)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>