Я пишу программу, которая использует информацию о сборах из файла для вывода позже, моя проблема прямо сейчас заключается в тестировании предоставленной информации. Я хочу проверить, совпадает ли введенный пользователем код с датой в файле. Используемый файл содержит даты и продажи в форме YYYY, MM, DD. Я пытаюсь использовать цикл for, чтобы проверить каждую строку файла на вход пользователя, но я получаю сообщение об ошибке, которое datetime.date не является итерируемым. Любые решения/альтернативы? Вот код,Использование цикла для проверки даты с datetime в python?
from datetime import date
def DateTest(Date, Position):
firstTry = True
validSyntax = False
if validSyntax == False:
if firstTry == True:
try:
Date = Date.strip().split(',')
Year = int(Date[0])
Month = int(Date[1])
Day = int(Date[2])
Date = date(Year, Month, Day)
except:
print "That is invalid input."
firstTry = False
else:
validSyntax = True
elif firstTry == False:
Date = raw_input("Please input the desired %s date in the form YYYY,MM,DD: " % Position)
try :
Date = startDate.strip().split(',')
Year = int(Date[0])
Month = int(Date[1])
Day = int(Date[2])
Date = date(Year, Month, Day)
except:
print "That is invalid input."
else:
validSyntax = True
print" ok got it"
if validSyntax == True:
for line in Date:
line = line.strip().split(',')
yearTest = int(line[0])
monthTest = int(line[1])
dayTest = int(line[2])
dateTest = date(yearTest, monthTest, dayTest)
if dateTest == Date:
"print debug"
startDate = raw_input("Please input the desired start date: ")
start = "start"
Response = DateTest(startDate, start)
Как вы можете видеть, что я проверить на правильный ввод, а затем проверить на дату, находящейся в файл, который говорит мне, дата и время не итерация.
Fyi, [PEP-8] (http://www.python.org/dev/peps/pep-0008/) говорит вам не использовать 'x == False' или' x == True', а просто 'x' и' not x'. Если вы не работаете с существующей базой кода, использующей стиль имени, который вы используете, я также предлагаю вам прочитать соответствующую часть PEP-8. Другие разработчики python, которые будут работать с вашим кодом в какой-то момент, будут вам за это! – ThiefMaster
Я бы * сильно * предлагаю не использовать неопределенный исключающий оператор. Это улавливает НИЧЕГО, что может пойти не так, и выполняет ваш код исключений, несмотря на любую ошибку. Кроме того, если вы хотите получить точную трассировку кодового блока, используйте 'raise' для повышения ошибки, вызвавшей оператор except. –