【问题标题】:Is there a conditional that runs if an if statement does not activate within a loop?如果 if 语句未在循环内激活,是否有条件运行?
【发布时间】:2019-09-13 09:26:14
【问题描述】:

编写一个简单的程序,在循环中交换数字的位置,直到它们按升序排列。我希望程序在 if 条件从未在 for 循环的实例中激活时结束。有没有更短的方法来做到这一点而不使用 while true/false 或 like?

while tf == True:
    for i in range(lisLen-1):
        tf=False
        if listy[i]>listy[i+1]:
             tf=True
             swap(listy, i, i+1)

【问题讨论】:

  • 不回答你的问题,但while tf == True: 是一种冗长的写法while tf:
  • 此外,当它最终正确排序列表时,它很可能会在最后一个索引上崩溃。

标签: python python-3.7


【解决方案1】:

去掉变量,改用break。然后您可以使用else: 子句对此进行测试。如果循环正常结束而不是break,则该子句运行。

while True:
    for i in range(lisLen-1):
        if listy[i]>listy[i+1]:
            swap(listy, i, i+1)
            break
    else:
        break

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多