Python日程打印问题:预约记录无法与表头对齐求助
解决日程表记录对齐问题
你的问题出在Appointment类的__str__方法没有使用和表头一致的固定宽度格式化,导致直接打印appointment对象时,字段只是用空格简单分隔,无法和表头的对齐格式匹配。另外你尝试的两种写法也存在问题:
- 第一种
format(schedule)是把整个列表传给format,不符合格式化字符串的参数要求; - 第二种如果没有正确从当前循环的appointment实例中获取属性值,也无法正常输出。
下面是两种可行的修复方案:
方案1:修改Appointment的__str__方法,统一格式化规则
修正类名(Python中类定义用小写class,不是Class),并让__str__返回和表头一致的格式化字符串:
class Appointment: def __str__(self): # 复用表头的格式化宽度,确保每个字段对齐 return '{:<15}{:<10}{:<8}{:<25}{:<25}{:<10}'.format( self.date, self.start, self.end, self.description, self.venue, self.priority )
之后你的showRecords函数不需要修改,循环中直接print(appointment)就能和表头对齐。
方案2:在showRecords函数中直接格式化打印每个属性
如果不想修改__str__方法,可以在循环里直接取出appointment的属性,用格式化字符串输出:
def showRecords(schedule): print('{:<15}{:<10}{:<8}{:<25}{:<25}{:<10}'.format("Date","Start","End","Subject","Venue","Priority")) print('{:<15}{:<10}{:<8}{:<25}{:<25}{:<10}'.format("----","-----","---","-------","-----","--------")) for appointment in schedule: # 直接获取每个属性并按固定宽度格式化 print('{:<15}{:<10}{:<8}{:<25}{:<25}{:<10}'.format( appointment.date, appointment.start, appointment.end, appointment.description, appointment.venue, appointment.priority )) else: print("No more appointments found.")
两种方案都能让你的预约记录和表头完美对齐,选哪种取决于你是否希望__str__方法本身就输出格式化后的字符串。
内容的提问来源于stack exchange,提问作者IvyDreamer
相关产品推荐
相关产品推荐

