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

C#薪资控制台应用:如何按列打印多列表,对应条目同行显示?

当然可以呀!要把这四个列表按规整的四列打印出来其实很简单,我给你分享几种实用的实现思路,适配控制台的排版需求:

方法一:原生字符串格式化(无需第三方库)

这种方法适合快速实现,不用额外安装包,通过字符串对齐语法就能保证列的整齐:

首先先确保你的payOwedList已经计算好(用列表推导式就能轻松搞定),然后用f-string的对齐规则控制每列宽度:

# 假设你已经获取了用户输入的三个列表
namesList = ["Alice Smith", "Bob Johnson", "Charlie Brown"]
hoursList = [40, 35, 42]
payRateList = [25.50, 18.75, 30.00]
# 计算应发薪资列表
payOwedList = [hours * rate for hours, rate in zip(hoursList, payRateList)]

# 打印表头,<15表示左对齐且占15个字符宽度(可根据需求调整)
print(f"{'Employees':<15} {'Hours Worked':<15} {'Pay Rate':<10} {'Pay Owed':<10}")
# 打印分隔线,让表格边界更清晰
print("-" * 50)

# 遍历所有数据,逐行打印
for name, hours, rate, owed in zip(namesList, hoursList, payRateList, payOwedList):
    print(f"{name:<15} {hours:<15} ${rate:<9.2f} ${owed:<9.2f}")

输出效果大概是这样:

Employees       Hours Worked    Pay Rate   Pay Owed   
--------------------------------------------------
Alice Smith     40              $25.50     $1020.00   
Bob Johnson     35              $18.75     $656.25    
Charlie Brown   42              $30.00     $1260.00   

方法二:自动适配列宽(更灵活)

如果员工名字长度不一,固定宽度可能导致排版混乱,你可以自动计算每列的最大宽度来适配:

namesList = ["Alice Smith", "Bob Johnson", "Charlie Brown"]
hoursList = [40, 35, 42]
payRateList = [25.50, 18.75, 30.00]
payOwedList = [hours * rate for hours, rate in zip(hoursList, payRateList)]

# 计算每列内容的最大宽度
max_name_len = max(len(name) for name in namesList)
max_hours_len = max(len(str(h)) for h in hoursList)
max_rate_len = max(len(f"${r:.2f}") for r in payRateList)
max_owed_len = max(len(f"${o:.2f}") for o in payOwedList)

# 表头宽度取标题和内容的最大值
col1_width = max(len("Employees"), max_name_len)
col2_width = max(len("Hours Worked"), max_hours_len)
col3_width = max(len("Pay Rate"), max_rate_len)
col4_width = max(len("Pay Owed"), max_owed_len)

# 打印表头
print(f"{'Employees':<{col1_width}} {'Hours Worked':<{col2_width}} {'Pay Rate':<{col3_width}} {'Pay Owed':<{col4_width}}")
# 计算分隔线总长度
total_width = col1_width + col2_width + col3_width + col4_width + 3  # 加3个空格的间隔
print("-" * total_width)

# 逐行打印数据
for name, hours, rate, owed in zip(namesList, hoursList, payRateList, payOwedList):
    print(f"{name:<{col1_width}} {hours:<{col2_width}} ${rate:<{col3_width-1}.2f} ${owed:<{col4_width-1}.2f}")

这种方式会根据你的数据自动调整列宽,不管名字多长都能完美对齐。

方法三:用第三方库生成美观表格(适合复杂场景)

如果想要更专业的表格样式,可以用tabulate库,它能帮你自动处理分隔线、对齐和格式:

首先安装库:

pip install tabulate

然后代码实现:

from tabulate import tabulate

namesList = ["Alice Smith", "Bob Johnson", "Charlie Brown"]
hoursList = [40, 35, 42]
payRateList = [25.50, 18.75, 30.00]
payOwedList = [hours * rate for hours, rate in zip(hoursList, payRateList)]

# 把四个列表组合成二维表格数据
table_data = list(zip(namesList, hoursList, payRateList, payOwedList))
# 定义表头
headers = ["Employees", "Hours Worked", "Pay Rate", "Pay Owed"]

# 打印表格,选择grid格式(还有simple、fancy_grid等多种样式可选)
print(tabulate(table_data, headers=headers, tablefmt="grid", floatfmt=".2f"))

输出效果会是这样:

+---------------+---------------+-----------+-----------+
| Employees     | Hours Worked  | Pay Rate  | Pay Owed  |
+===============+===============+===========+===========+
| Alice Smith   | 40            | 25.50     | 1020.00   |
+---------------+---------------+-----------+-----------+
| Bob Johnson   | 35            | 18.75     | 656.25    |
+---------------+---------------+-----------+-----------+
| Charlie Brown | 42            | 30.00     | 1260.00   |
+---------------+---------------+-----------+-----------+

小提醒

要确保四个列表的长度一致,不然zip会自动截断到最短的列表长度,导致部分数据无法显示哦~

内容的提问来源于stack exchange,提问作者MrPryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:57:16