You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:35:16