跑步者计时程序:输出时间等距对齐与总时间转时分的技术问题
解决跑步成绩程序的两个问题
问题1:实现姓名长度不同时时间间距一致
要让时间始终对齐,核心是给姓名字段设置固定宽度——不管姓名长短都占用相同的字符数,不足的部分用空格填充。以Python为例,你可以用f-string的格式化语法轻松实现左对齐(或右对齐,按需选择):
比如设定姓名占15个字符宽度、左对齐,这样后面的时间就会自动对齐到同一列:
# 示例参赛数据 runners = [("Suzie", 329), ("Phil", 445), ("Alexander", 298), ("L", 512)] # 格式化输出 for name, time in runners: # <15 表示左对齐,占用15个字符宽度 print(f"{name:<15}{time}")
输出效果会是:
Suzie 329 Phil 445 Alexander 298 L 512
你可以根据实际姓名的最长长度调整15这个数值,确保所有姓名都能容纳,这样时间的位置就完全一致了。
问题2:将总时间数值转换为小时和分钟格式
假设你的总时间是秒数(比如329代表329秒),可以通过整除和取余运算拆分出小时和分钟:
def format_time(total_seconds): hours = total_seconds // 3600 # 1小时=3600秒 remaining_seconds = total_seconds % 3600 minutes = remaining_seconds // 60 # 1分钟=60秒 # 按需调整输出格式,比如小时为0时只显示分钟 if hours == 0: return f"{minutes}分钟" else: return f"{hours}小时{minutes}分钟" # 测试示例 print(format_time(329)) # 输出:5分钟 print(format_time(445)) # 输出:7分钟 print(format_time(3700)) # 输出:1小时1分钟
如果你的总时间本身是分钟数(比如329代表329分钟),逻辑更简单:
def format_time(total_minutes): hours = total_minutes // 60 minutes = total_minutes % 60 return f"{hours}小时{minutes}分钟" print(format_time(329)) # 输出:5小时29分钟
你可以根据实际的时间单位调整代码,最终就能得到清晰的小时+分钟格式啦。
内容的提问来源于stack exchange,提问作者Henri Wurm
相关产品推荐
相关产品推荐

