对于代码中的循环语法错误,但在分离时不会

时间:2014-06-25 15:25:48

标签: python for-loop syntax syntax-error

我制作了一个程序,该程序应该告诉我接下来要为学校做什么,但它在 for循环中给了我一个奇怪的语法错误。这是完整的代码:

def dumptodaydate():
 import pickle
 with open('LastOpenDate.txt', 'wb') as DOT:
  import time
  ODate = time.strftime('%d')
  OMonth = time.strftime('%m')
  OYear = time.strftime('%Y')
  List = {'Day':ODay, 'Month':OMonth, 'Year':OYear}
  pickle.dump(List, DOT)


def caltimelefttask():
 import pickle

 with open('LessonOut.txt', 'rb') as Li:
  Lesson = pickle.load(Li)

 with open('ExercisesOut.txt', 'rb') as Ei:
  Exercises = pickle.load(Ei)

 with open('AssignmentOut.txt', 'rb') as Ai:
  Assignment = pickle.load(Ai)

 with open('LastOpenDate.txt', 'rb') as LOD:
  List = pickle.load(LOD)

 from datetime import date
 Today = date.today()
 ODay = List['Day']
 OMonth = List['Month']
 OYear = List['Year']
 DifDay = (Today(eval(OYear),eval(OMonth), eval(ODay)).days
 for key in Lesson:
  OTimetask = Lesson[key]['TimeLeftTask']
  TimeLeft = OTimetask - DifDay
  Rating = Rating + (TimeLeft * 2)
  if Timeleft == 0 and OTimetask > 3:
   Rating = Rating + 100
  elif OTimetask > 0 and TimeLeft == 0:
   Rating = Rating + 50
  elif OTimetask > 4 and imeLeft == 0 and OTimetask != 0:
   Rating = Rating + 50
  Lesson[key]['Rating'] = Rating

  for key in Exercises.keys():
  OTimetask = Exercises[key]['TimeLeftTask']
  TimeLeft = OTimetask - DifDay
  Rating = Rating + (TimeLeft * 2)
  if Timeleft == 0 and OTimetask > 3:
   Rating = Rating + 100
  elif OTimetask > 0 and TimeLeft == 0:
   Rating = Rating + 50
  elif OTimetask > 4 and imeLeft == 0 and OTimetask != 0:
   Rating = Rating + 50
  Exercises[key]['Rating'] = Rating

 for key in Assignment.keys():
  OTimetask = Assignment[key]['TimeLeftTask']
  TimeLeft = OTimetask - DifDay
  Rating = Rating + (TimeLeft * 2)
  if Timeleft == 0 and OTimetask > 3:
   Rating = Rating + 100
  elif OTimetask > 0 and TimeLeft == 0:
   Rating = Rating + 50
  elif OTimetask > 4 and imeLeft == 0 and OTimetask != 0:
   Rating = Rating + 50
  Assignment[key]['Rating'] = Rating


def ADD():
 print('Name of task? (Keep it short for convenience Example: Math1)\n(Must be diferent from any other non deleted tasks)')
 Name = input('>>>')
 print('Description of task? (this can be as long as you want)')
 Desc = input('>>>')
 print('Rate the time it takes you to do the task on a scale from 1 to 20')
 Time = input('>>>')
 print('Rate the importance of the task on a scale from 1 to 20')
 Imp = input('>>>')
 print('Rate how much you want to do it on a scale from 1 to 5 \n(1= want to do it, 5= don\'t want to')
 Want = input('>>>')
 print('enter deadline (day)')
 TimeDay = input('>>>')
 print('enter deadline (month)')
 TimeMonth = input('>>>')
 print('enter deadline(year)')
 TimeYear = input('>>>')
 print('what type of homework is it? (Lesson/Exercises/Assignment)')
 TaskType = input('>>>')


 from datetime import date
 Today = date.today()
 TaskForDate = date(eval(TimeYear), eval(TimeMonth), eval(TimeDay))
 TimeLeftTemp = abs((TaskForDate - Today).days)
 print ('You have', TimeLeftTemp, 'days to finish this task.')

 Rating = eval(Time) + eval(Imp) + eval(Want) - (TimeLeftTemp * 2)
 if TimeLeftTemp < 4:
  Rating = Rating + 50
 if TimeLeftTemp <= 0:
  Rating = Rating + 50

 if TaskType == 'Lesson':
  Lesson[Name] = {'Rating':Rating, 'Desc':Desc, 'TimeLeftTask':TimeLeftTemp}
 if TaskType == 'Exercises':
  Exercises[Name] = {'Rating':Rating, 'Desc':Desc, 'TimeLeftTask':TimeLeftTemp}
 if TaskType == 'Assignment':
  Assignment[Name] = {'Rating':Rating, 'Desc':Desc, 'TimeLeftTask':TimeLeftTemp}


def DEL():
 print ('What type of task is it? \nLesson, Exercises or Assignment)')
 WhatDict = input('>>>')
 if WhatDict == Lesson:
  print(Lesson.keys())

 if WhatDict == Exercises:
  print(Exercises.keys())

 if WhatDict == Assignment:
  print(Assignment.keys())

 print ('What task do you want do delete?')
 WhatDel = input('>>>')

 if WhatDict == 'Lesson':
  try:
   del Lesson[WhatDel]
  except:
   pass

 elif WhatDict == 'Exercises':
  try:
   del Exercises[WhatDel]
  except:
   pass

 elif WhatDict == 'Assignment':
  try:
   del Assignment[WhatDel] 
  except:
   pass
   pass

 else:
  print('Sorry, the type of task is not recognised, please try again.')


def sort_by_subdict(dictionary, subdict_key):
 return sorted(dictionary.items(), key=lambda k_v: k_v[1][subdict_key])


def SHOW():
 ShowWhat = input('What type of task do you want to do?\nLesson/Exercises/Assignment)\n>>>')
 if ShowWhat == 'Lesson' or 'lesson':
  print (sort_by_subdict(Lesson, 'Rating'))

 elif ShowWhat == 'Exercises' or 'exercises':
  print (sort_by_subdict(Exercises, 'Rating'))

 elif ShowWhat == 'Assignment' or 'assignment':
  print (sort_by_subdict(Assignment, 'Rating'))

 else:
  print('Type of task not recognosed, please try again')


def dumptxt():
 import pickle

 with open('LessonOut.txt', 'wb') as Lo:
  pickle.dump(Lesson, Lo)

 with open('ExercisesOut.txt', 'wb') as Eo:
  pickle.dump(Exercises, Eo)

 with open('AssignmentOut.txt', 'wb') as Ao:
  pickle.dump(Assignment, Ao) 


caltimelefttask()


while True:
 print ('WARNING NEVER EXIT PROGRAM WITHOUT USING THE quit COMMAND,\nOR ALL ACTIONS DONE WILL BE LOST')
 print ('Commands:')
 print ('add (to add a task)')
 print ('del (to delete a task)')
 print ('quit (to exit program)')
 print ('show (to see your tasks)')
 Input = input('>>>')


 if Input == 'add':
  ADD()


 elif Input == 'del':
   DEL()


 elif Input == 'show':
  SHOW()

 elif Input == 'quit':
  print ('are you sure you want to quit? y/n')
  Input = input('>>>')
  if Input == 'y':
   dumptxt()
   quit()
  elif Input == 'n':
   print ('Not exiting')
  else: 
   print ('Error, command not recognised')

它在第34行给出了语法错误,但它自身运行良好(当时只有[def caltimelefttask]在文件中),所以我不明白。

DifDay = Today(eval(OYear),eval(OMonth), eval(ODay)).days
for key in Lesson:

有三个永恒的文本文件,上面有空白的腌制dicts。

如果有人能帮助我解决这个错误(我打赌我忘记了一些愚蠢的事情),我将非常感激 感谢

1 个答案:

答案 0 :(得分:0)

这一行:

DifDay = (Today(eval(OYear),eval(OMonth), eval(ODay)).days

错过了结束。)

此外,这一行:

for key in Exercises.keys():

没有正确缩进。

我会建议阅读this并清理那个缩进。