如何在Python成绩分析程序中以用户友好格式打印元组?
如何格式化成绩列表为「科目 => 成绩」的友好输出?附enumerate()用法解析
一、实现友好格式输出的最简方式
直接遍历列表中的每个元组,解构出科目和成绩即可——你之前用range()报错,是因为错误地把列表直接传给了只接受整数参数的range()。
代码实现
def print_marksheet(L): # 直接遍历每个元组,解构科目和成绩 for subject, score in L: print(f"{subject} => {score}") # 测试示例 L = [('English', 78), ('Mathematics', 99)] print_marksheet(L)
输出结果
English => 78
Mathematics => 99
如果你非要用range()(不推荐)
如果执念想用range(),得先取列表长度作为参数,写法如下,但这种写法冗余,不如直接遍历元素:
def print_marksheet(L): for i in range(len(L)): subject, score = L[i] print(f"{subject} => {score}")
二、enumerate()的实际用法
*enumerate()*的核心作用是给遍历的元素附加索引序号,只有当你需要输出带序号的内容时才用得到,不是格式化这个成绩列表的必须工具。
带序号的成绩输出示例
def print_marksheet(L): # start=1 让序号从1开始,默认是0 for idx, (subject, score) in enumerate(L, start=1): print(f"第{idx}门:{subject} => {score}") # 测试 L = [('English', 78), ('Mathematics', 99)] print_marksheet(L)
输出结果
第1门:English => 78
第2门:Mathematics => 99
拆解说明
enumerate(L)会生成形如(0, ('English', 78))的元组,第一个元素是索引,第二个是列表里的原始元组start=1参数可以修改索引的起始值,避免默认从0开始的序号不符合日常习惯- 用
idx, (subject, score)解构元组,把索引存到idx,同时把成绩元组里的两个值分别取出来
内容的提问来源于stack exchange,提问作者PCuser2009
相关产品推荐
相关产品推荐

