0

このコードは、毎回ファイルにない日付を返していますが、その理由はわかりません。

testDate = open("Sales.txt")

#Declaring variables for later in the program
printNum = 1

newcost = 0

startTestLoop = 1

endTestLoop = 1

#Creating a loop in case input is invalid
while startTestLoop > 0:

    #Asking user for start date
    #startDate = raw_input("Please input the desired start date in the form YYYY,MM,DD: ")


    #Checking if input is valid, and arranging it to be used later
    try :
        startDate = startDate.strip().split(',')
        startYear = startDate[0]
        startMonth = startDate[1]
        startDay = startDate[2]
        startYear = int(startYear)
        startMonth = int(startMonth)
        startDay = int(startDay)
        startDate = date(startYear, startMonth, startDay)
    #Informing user of invalid input
    except:
        "That is invalid input."
        print
    #EndTry



    #Testing to see if date is in the file, and informing user
    if startDate not in testDate:
        print "That date is not in the file."
    #Exiting out of loop if data is fine 
    else:
        startTestLoop -= 1
        print "Aokay"
    #EndIf
4

2 に答える 2

3

この式not inは、イテラブル (リスト、タプル、さらには文字列) 内の要素のメンバーシップをテストします。日付(またはそれ以外のもの)が開いているファイル内にあるかどうかをテストするために想定しているようには機能しません。ファイルを 1 行ずつトラバースし、日付 (文字列) が 1 行にあるかどうかを確認する必要がありますnot in

編集 :

コメントで提案されているように、次を使用できます。

f = open("Sales.txt")
testDate = f.read()
f.close()

...ファイルの内容を文字列として読み取るためですが、ファイル内の日付とコード内の日付の両方が同じ文字列形式を使用していることを確認する必要があります。

于 2012-05-14T15:20:08.917 に答える
1
 #assume your Sales.txt contains a list of dates split by space
  if startDate not in testDate.read().split():
        print "That date is not in the file."
于 2012-05-14T15:25:53.797 に答える