请帮我修复代码。您需要使用 itertools 模块中的类和工具显示比当前日期少一年的名称/日期元组列表(即,相对于当前日期的日期已经过去一年)。
from itertools import chain
import datetime
from datetime import timedelta
class User:
username = str
register_date = datetime
def __init__(self, username, register_date):
self.username = username
self.register_date = register_date
def sort(self):
if datetime.datetime.now() - timedelta(days=365) > self.register_date:
return User(f'username={self.username}, register_date={self.register_date}')
user_reg = [User(username='Chess', register_date=datetime.datetime(2021, 9, 5, 4, 10, 43, 712296)),
User(username='Robert', register_date=datetime.datetime(2021, 9, 4, 4, 10, 43, 712304)),
User(username='Monica', register_date=datetime.datetime(2021, 9, 3, 4, 10, 43, 712286)),
User(username='Sara', register_date=datetime.datetime(2021, 9, 3, 4, 10, 43, 712233)),
User(username='Alice', register_date=datetime.datetime(2021, 8, 30, 4, 10, 43, 712313)),
User(username='Mila', register_date=datetime.datetime(2021, 8, 28, 4, 10, 43, 712324)),
User(username='John', register_date=datetime.datetime(2021, 8, 27, 4, 10, 43, 712273))]
for i in user_reg:
print(i.sort())
>>>TypeError: __init__() missing 1 required positional argument: 'register_date'
通常,生成的代码应该与下面的代码相同,只使用 itertools 模块中的类和工具。还想知道:是否可以仅使用str方法来实现上面的代码?我尝试在其中添加一个 if,但它给出了错误“ str返回了非字符串(类型 NoneType)”。我还请您指出我在使用该课程时的错误,并告诉我如何正确使用。谢谢!
user_reg2 = [('Chess', datetime.datetime(2021, 9, 5, 4, 10, 43, 712296)),
('Robert', datetime.datetime(2021, 9, 4, 4, 10, 43, 712304)),
('Monica', datetime.datetime(2021, 9, 3, 4, 10, 43, 712286)),
('Sara', datetime.datetime(2021, 9, 3, 4, 10, 43, 712233)),
('Alice', datetime.datetime(2021, 8, 30, 4, 10, 43, 712313)),
('Mila', datetime.datetime(2021, 8, 28, 4, 10, 43, 712324)),
('John', datetime.datetime(2021, 8, 27, 4, 10, 43, 712273))]
result = []
for i in user_reg2:
if datetime.datetime.now() - datetime.timedelta(days=365) > i[1]:
result.append(i)
print(result)
>>>[('Robert', datetime.datetime(2021, 9, 4, 4, 10, 43, 712304)),
('Monica', datetime.datetime(2021, 9, 3, 4, 10, 43, 712286)),
('Sara', datetime.datetime(2021, 9, 3, 4, 10, 43, 712233)),
('Alice', datetime.datetime(2021, 8, 30, 4, 10, 43, 712313)),
('Mila', datetime.datetime(2021, 8, 28, 4, 10, 43, 712324)),
('John', datetime.datetime(2021, 8, 27, 4, 10, 43, 712273))]