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

Python中如何分别打印多列表内的多个变量?(超速罚单场景)

解决不定数量人员超速罚单汇总打印的通用方案

嘿,我懂你现在的需求啦——录入完任意数量的人员超速信息后,要从对应数据里逐个取出每个人的姓名、超速速度和罚款金额,逐行单独打印对吧?这其实用Python的几种通用写法就能轻松搞定,我给你结合场景分三种方案参考:

方案1:用「列表+字典」存储(最直观,适合练手)

把每个人的信息打包成一个字典,然后把所有字典放进一个列表里,不管后续加多少人,直接遍历这个列表就能逐行打印。

# 初始化存储所有违规人员信息的列表
violators = []

# 封装一个添加人员信息的函数(你可以替换成自己的录入逻辑,比如input输入)
def add_violator(name, speed, fine):
    # 把单个人的信息做成字典,添加到列表中
    violators.append({
        "name": name,
        "speed": speed,
        "fine": fine
    })

# 模拟录入几个人的信息(实际用的时候换成你的录入流程)
add_violator("张三", 120, 200)
add_violator("李四", 145, 500)
add_violator("王五", 110, 100)

# 打印汇总信息
print("=== 超速罚单汇总 ===")
for person in violators:
    print(f"姓名:{person['name']},超速速度:{person['speed']}km/h,需缴罚款:{person['fine']}元")

这种方式的好处是结构清晰,每个字典都明确对应一个人的所有信息,而且列表可以无限追加,完全不用管人数多少,遍历逻辑通用。

方案2:用自定义类存储(面向对象风格,更规范)

如果想练手面向对象的写法,可以定义一个违规人员类,把每个人的信息封装成类实例,再存到列表里:

# 定义违规人员类
class Violator:
    def __init__(self, name, speed, fine):
        self.name = name
        self.speed = speed
        self.fine = fine

# 初始化存储实例的列表
violators = []

# 添加人员实例
violators.append(Violator("张三", 120, 200))
violators.append(Violator("李四", 145, 500))

# 打印汇总
print("=== 超速罚单汇总 ===")
for v in violators:
    print(f"姓名:{v.name},超速速度:{v.speed}km/h,需缴罚款:{v.fine}元")

这种写法更符合工程化的规范,后续如果要给人员信息加更多字段(比如车牌、违章时间),直接修改类的属性就行,扩展性更强。

方案3:适配现有独立列表的写法(如果已经用了多个分开的列表)

要是你现在的代码已经把姓名、速度、罚款分别存在三个独立的列表里(比如names = []、speeds = []、fines = []),那可以用zip()函数把三个列表对应位置的元素打包,实现通用遍历:

# 假设你已经有这三个独立的列表
names = ["张三", "李四", "王五"]
speeds = [120, 145, 110]
fines = [200, 500, 100]

# 打印汇总
print("=== 超速罚单汇总 ===")
# zip会把三个列表对应位置的元素打包成元组,遍历的时候同时取出
for name, speed, fine in zip(names, speeds, fines):
    print(f"姓名:{name},超速速度:{speed}km/h,需缴罚款:{fine}元")

⚠️ 注意:用这种方式要确保三个列表的长度始终一致,不然zip()会以最短的列表为准,可能导致部分数据丢失。所以更推荐前两种把信息聚合在一起的写法。

内容的提问来源于stack exchange,提问作者He-man2002

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:01:30