【问题标题】:Python loop query and issuePython循环查询和问题
【发布时间】:2020-06-11 18:56:42
【问题描述】:

我是 Python 新手,因此您可能需要耐心等待 :) 如果这不适合此领域,请告诉我。我在使用 for 循环浏览列表时遇到问题。这里的想法是在列表中找到一组连续的数字时打印“True”,但如果序列包含少于 3 次连续迭代,则不应打印 true。

例如:

理想情况下,程序会说“您的列表中有 3 个序列”。在这种情况下,它将是 (1,2,3)、(10,11,12) 和 (22,23,24)。请注意,列表 (7,8) 和 (15,16) 中还有另外 2 组连续的数字,但是程序应该忽略它们,因为它小于 3(如上所述)。请在下面找到代码,但是我遇到了一个小障碍。感谢您的任何指点。

list1=[1,2,3,7,8,10,11,12,15,16,22,23,24]

for i in range(len(list1)-1):
    if (list1[i] + 1 == list1[i+1]):
        count+=1
    if count >=3:
        print("True")
    else:
        continue
    continue
print(count)

我确定我已经阅读了类似帖子中的答案,但我想了解我缺少的代码,而不是插入对我来说没有意义的代码。

谢谢

【问题讨论】:

    标签: python-2.7


    【解决方案1】:

    由于查询是在序列中只有唯一的数字..所以下面的代码可以正常工作......

    list1=[1,2,3,4,5,6,7,8,9,10]
    count=0
    i=0
    while i < (len(list1)-3):
        if list1[i]+1 == list1[i+1]:
            if list1[i+1]+1 == list1[i+2]:
                print(list1[i], list1[i+1], list1[i+2])
                i=i+2
                count=count+1
        i=i+1
    
    print(count)
    

    【讨论】:

    • 谢谢桑迪普。很高兴看到它工作,但是如果我不想打印出序列的每个迭代,例如我不希望它打印这个:
    • 抱歉 Sandeep,我在尝试更正上一条评论时遇到了编辑问题。请参阅以下正确评论:谢谢Sandeep。很高兴看到它工作,但是如果我不想打印出所有可能的序列,例如,如果我的列表是 [1,2,3,4,5,6],那么当前您上面的代码将打印:(1,2 ,3)(2,3,4)(4,5,6)。我知道如果我稍微修改您的代码会有所帮助,但我不想在每个输出中重复每个数字。我试图到达一个地方,如果程序找到一个由 3 个数字组成的序列,它将打印 (1,2,3) 和 (4,5,6)。希望这是有道理的
    • 感谢磨坊,尝试了您的新代码。完美运行:)
    • 我很快就谈过了 :) 请参阅我之前的详细评论。这就是我面临的问题。如果您有任何想法,请告诉我
    • 所以你想要输出中的序列..这就是我的第一个代码正在做的事情..只需取消注释我的代码中的第一个打印语句......如果可行,也请接受答案...... .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    相关资源
    最近更新 更多