【问题标题】:Reiterate for loop reading a file until condition is met重复for循环读取文件直到满足条件
【发布时间】:2019-05-12 01:28:11
【问题描述】:

我想逐行读取文件。这些行包含运算符和数字。如果是“+”,我将添加后面的数字,如果是“-”,我将减去后面的数字。这将保存在一个计数变量中。然后,此计数变量将存储在列表中。我将继续循环遍历文件,直到找到重复的计数值。我的想法是继续循环,直到找到重复项(因此我的 while 条件)。但是当我到达文件的末尾时,我需要重新开始!所以文件末尾的计数现在将从头开始

while 循环,然后是 for 循环

def computeProblemOnePointFive(inputFileString):
    inputFile = open(inputFileString, "r")
    count = 0
    countsList=[]
    while len(countsList) == len(set(countsList)):
        for line in inputFile:
            if "+" in line:
                value = int(line.strip("+"))
                count = count + value
                countsList.append(count)
            if "-" in line:
                value = int(line.strip("-"))
                count = count - value
                countsList.append(count)
    return countsList[-1]

【问题讨论】:

  • ...您能否更具体地说明您的代码中究竟有什么问题?是否有特定部分不起作用?你能提供一个例子/实际的输入/输出吗?
  • 代码没有停止。我添加了打印语句,然后我看到的是 for 循环遍历整个文件,然后当它到达末尾时,它会离开 for 循环但永远不会重新进入。然后它就坐在那里,因为 while 条件永远不会变为假。我知道这个问题在循环文件几次之前不会变为假
  • 这不是re-read an open file的情况吗?
  • 尝试将 inputFile.seek(0) 放在内部 for 循环的结尾之后,但仍然在 while 循环内

标签: python loops for-loop while-loop


【解决方案1】:

一个潜在的解决方案可能正在发生变化

inputFile = open(inputFileString, "r")

进入while循环

def computeProblemOnePointFive(inputFileString):
    # the line was here previously
    count = 0
    countsList=[]
    while len(countsList) == len(set(countsList)):
        inputFile = open(inputFileString, "r") #the line that was moved
        for line in inputFile:
            if "+" in line:
                value = int(line.strip("+"))
                count = count + value
                countsList.append(count)
            if "-" in line:
                value = int(line.strip("-"))
                count = count - value
                countsList.append(count)
    return countsList[-1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多