#python #string #datetime #object #attributeerror
Вопрос:
Я действительно застрял на этой части своего кода, и было бы удивительно получить какой-то вклад от кого-то другого. Я не писал этот раздел, и я не могу связаться с человеком, который это сделал (это групповой проект). Он действительно выдает ошибки, когда вы неправильно форматируете ввод (мы не обязаны выполнять проверки для этого проекта, поэтому я бы не беспокоился об этом), но меня беспокоят эти ошибки:
Traceback (most recent call last): File "/Users/mycomputer/PycharmProjects/project/main.py", line 46, in lt;modulegt; stringsdates() File "/Users/mycomputer/PycharmProjects/project/main.py", line 29, in stringsdates birthmonth = birthday.month AttributeError: 'str' object has no attribute 'month'
Любая помощь будет очень признательна Кстати, вот код:
import datetime def yearadd(date): test = datetime.timedelta(days=365) return date test def stringsdates(): # Inputs for first and last name, start date and birthday along with yearly salary. firstname = input("What is your first name? ") lastname = input("What is your last name? ") startdate = input("What is the date you started with the company? (YYYY MM DD) ") birthday = input("What is your birthday? (YYYY MM DD) ") yearlysal = input("What is your yearly salary? ") # ♡ Processing startdate = datetime.datetime.strptime(startdate, "%Y %m %d") birthdate = datetime.datetime.strptime(birthday, "%Y %m %d") yearhired = startdate.year birthmonth = birthday.month today = datetime.datetime.today() formatfullname = (firstname lastname ", " firstname[0] "." lastname ", " lastname ", " firstname[ 0] ".") employeenum = firstname.upper()[0] lastname.upper()[0] "-" str(yearhired) "-" str(birthmonth) reviewdate = yearadd(yearhired) nextbday = today - birthdate # ♡ Output print(formatfullname) print(employeenum) print(reviewdate) print(nextbday) print(yearlysal)
Комментарии:
1. вы получаете доступ
birthday.month
, но, возможно, вы имели в видуbirthdate.month
?birthday
пришло с вашего ввода, так что это будет строка
Ответ №1:
Вы пытаетесь прочитать месяц рождения, birthday.month
где день рождения-это строка, которую вы читаете от пользователя, и поскольку тип строки не имеет связанного с ним атрибута месяца, вы получаете сообщение об ошибке. То, что вы, вероятно, хотели использовать, было преобразованным объектом datetime birthdate
.
birthmonth = birthdate.month
Комментарии:
1. Это сработало, большое вам спасибо! Сейчас появилось несколько новых ошибок, но изменение даты рождения было хорошим 🙂 Файл «/Users/user/PycharmProjects/project/main.py», строка 30, в файле stringsdates reviewdate = yearadd(нанятый год) «/Users/user/PycharmProjects/project/main.py», строка 8, в yearadd дата возврата ошибка типа теста: неподдерживаемые типы операндов для : ‘int’ и ‘datetime.timedelta’ Я очень сожалею о своей неопытности: (У меня такое чувство, что где-то требуется int, но я не совсем уверен, как его реализовать, если это решение?
2. Рад помочь. Что касается вашей новой ошибки, похоже, вы пытаетесь добавить
test
datetime.timedelta
объект с целым числом. Я думаю, вы можете просто исправить это, взявtest.days
. Так что просто измените его наreturn date test.days
. И, пожалуйста, примите ответ, если вы нашли его полезным.