#python #for-loop #syntax #syntax-error
#python #for-цикл #синтаксис #синтаксическая ошибка
Вопрос:
Я создаю программу, которая должна указывать мне, какую задачу я должен выполнить в школе, но она выдает мне странную синтаксическую ошибку в цикле 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. Было бы полезно, если бы вы указали, где находится строка 34. Мы не собираемся считать все это за вас.
2. Слишком много информации….
3. Не могли бы вы привести примерное значение «Список»?
4. @user3775786: Пожалуйста, прочитайте руководство по стилю для кода Python .
Ответ №1:
Эта строка:
DifDay = (Today(eval(OYear),eval(OMonth), eval(ODay)).days
Отсутствует закрытие).
Далее, эта строка:
for key in Exercises.keys():
не имеет правильного отступа.
Я бы рекомендовал прочитать это и очистить этот отступ.
Комментарии:
1. Также у него не должно быть такого импорта в случайных методах, все они должны быть вверху. А также ошибка прямо перед импортом