我正在尝试编写一个发出问题并检查答案的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
被跳过了。有谁知道它为什么被跳过以及任何修复它。
答案 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()),它将返回字符串的整数长度