在程序中跳过Python for循环

时间:2016-05-26 12:29:45

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

我正在尝试编写一个发出问题并检查答案的python程序。它有一个True循环,当收到答案时它会被打破。文件“players.txt”只包含一个数字,该数字是当前可用于回答问题的玩家数量。我遇到的问题是代码中的for循环:

while True:
    myfile = open("players.txt","r")
    print("File: players.txt OPENED")
    for i in range(int(myfile.read())):
        print("For Loop STARTED")
        ftp.retrbinary("RETR answer"+str(i+1)+".txt",open("answer"+str(i+1)+".txt","wb").write)
        myfile = open("answer"+str(i+1)+".txt")
        print("File: answer"+str(i+1)+".txt OPENED")
        if answer == myfile.read():
            scores[i] = scores[i] + 1
            print("Player",str(i+1),"got the correct answer first.")
            correctanswerfound = True

        print("No answer from player",str(i+1),"yet.")
    if correctanswerfound == True:
        correctanswerfound = False
        break

        print("No answer from player",str(i+1),"yet.")
    if correctanswerfound == True:
        correctanswerfound = False
        break

被跳过了。有谁知道它为什么被跳过以及任何修复它。

4 个答案:

答案 0 :(得分:0)

我的理解是你有输出:

>> File: players.txt OPENED

但不是:

>> For Loop STARTED

这意味着range(int(myfile.read()))实际上是一个空列表。如果我是你,我会检查我的文件和我的阅读方法。

答案 1 :(得分:0)

“myfile.read()”无法正常工作,因为此时已读入整个文件

使用类似

的内容
line=1
while(line):
  line = myfile.readline()
  for i in range(int(line)):

答案 2 :(得分:0)

.read方法返回以字符串形式读取的字节数。因此,当你尝试int(myfile.read())时,它将为int()提供一个无效的文字,其中包含基数10(通过使用myfile.read()读取文件获得的字符串)

答案 3 :(得分:0)

就像Tony Vincent说的那样。 read()返回文件中存在的文本,您不能将其强制转换为int。将int(myfile.read())更改为len(myfile.read()),它将返回字符串的整数长度