这个while循环不会运行?

时间:2019-11-08 02:16:25

标签: python python-3.x loops while-loop

我一直在做一些关于python的基本练习,到目前为止,它的运行非常顺畅,尽管我遇到了一个问题,其中第二个while循环无法运行。到目前为止,我已经重新缩进,定义了整秒,并尝试将参数放置在循环上,其中done = True,而done == True :, done = False (后来的代码是我以前遇到的问题,但为了使它正常工作,我删除了它。)

如果您觉得有必要,可以对我的代码提出一些建议,因为我一直在教自己如何使用python编写代码,所以我只是想介绍一下它。我也包括了第一个while循环,因为我发现代码太低可能是在不知不觉中导致问题的原因。

import random
Olist = []
while True:
counter = 0
counter2 = 0
print("\nWelcome to exercise 05")
InH1 = str(input("\nDo you wish to continue? (y/n):"))
if InH1 == 'y':
    list1 = random.sample(range(30), 11)
    list2 = random.sample(range(30), 9)
    print("\n<><>Two random lists have been generated.<><>")
    print(list1)
    print(list2)
    max_index = len(list2)-1
    print("\n<><>Max index has been generated.<><>")
    InD = str(input("\nStart the func? (y/n):"))
    if InD == 'n':
        break
    if InD == 'y':
        while True:
            if counter2 == 11:
                print(Olist)
                InL = str(input("\nEnter any key to return to the start of the program,\
                                  or,\n enter 'q' to break the program."))
                if InL == 'q':
                    break
            if list1[counter2] == list2[counter]:
                Olist.append(list2[counter])
                counter + 1
            elif counter == 10:
                counter = 0
            else:
                counter + 1
if InH1 == 'n':
    break

3 个答案:

答案 0 :(得分:0)

您写道:

while True:
counter = 0
counter2 = 0

counter = 0是while循环的

您想要以下吗?

while True:
   counter = 0
   counter2 = 0

答案 1 :(得分:0)

if list1[counter2] == list2[counter]:
                Olist.append(list2[counter])
                counter + 1
            elif counter == 10:
                counter = 0
            else:
                counter + 1

我认为您的counter + 1声明正在给您带来严重的麻烦。真的在那儿仔细看...你不是说counter = counter + 1吗?

答案 2 :(得分:0)

Ciao

一些细节:

  • 在分配counter2之后,counter2 = 0上没有任何操作,因此您永远不会进入if counter2 == 11分支[无法访问],并且-除非其他地方需要,否则您可以完全删除该部分< / li>
  • 如汤姆所说,您必须要求计数器的增量为counter = counter + 1或缩写为counter += 1
  • 您还必须控制counter不会越过max_index,否则您将尝试从{{1}中获取生成"IndexError: list index out of range"的数组中不存在的元素可以通过以下if list1[counter2] == list2[counter]分支重置counter前面的}行
  • 您需要创建一个条件来停止第二个循环,否则就不会结束程序:这就是为什么我将其修改为elif的原因:同一行将允许您安全地删除{也是上一点的{1}}分支
  • 我离开了第一个循环不断运行以无限期地重新开始

此代码应适合您的目标:

while counter < max_index:

希望有帮助,
安东尼诺