Python函数返回多值打印时如何去除括号、单引号等多余符号
问题原因
- 你的函数返回值类型不统一:当平均分≥90时,你返回的是由数值和字符串组成的元组,其他分数段返回的是单独的字符串,这就导致后续打印的时候,90分以上的场景拿到的是元组结构,直接打印就会自带括号、单引号这些结构标识。
- 打印的时候没有对返回的多值做拆分处理,直接把整个元组作为变量输出了。
可行修改方案
方案1:统一函数返回格式,始终返回「平均分+对应等级字符串」两个值
这是最稳妥的方案,修改后的代码如下:
def lab_odev_arasinav_final(l, o, ara, f): agirlikli_ortalama = (l * (20/100)) + (o * (15/100)) + (ara * (25/100)) + (f * (40/100)) # 先计算对应字母等级,所有分支统一输出逻辑 if agirlikli_ortalama >=90 : harf_notu = "A" elif agirlikli_ortalama >=75 : harf_notu = "B" elif agirlikli_ortalama >=60 : harf_notu = "C" elif agirlikli_ortalama >=45 : harf_notu = "D" else : harf_notu = "F" # 所有场景统一返回两个值 return agirlikli_ortalama, harf_notu # 调用函数时直接拆分两个返回值 ortalama, harf_notu = lab_odev_arasinav_final(95 , 95 , 80, 95) # 按照要求格式打印,自动处理整数/小数显示 print(f"Programlama Temelleri I Dersi Ogrenci No: 210911018 Ağırlıklı Ortalama: {int(ortalama) if ortalama.is_integer() else ortalama} Harf Notu: {harf_notu}")
方案2:不修改原有函数逻辑,打印时做类型判断适配
如果你要保留原有函数的返回逻辑,可以在打印环节加兼容处理:
ortalama = lab_odev_arasinav_final(95 , 95 , 80, 95) if isinstance(ortalama, tuple): # 适配90分以上的元组返回场景 ortalama_degeri, harf_str = ortalama print(f"Programlama Temelleri I Dersi Ogrenci No: 210911018 Ağırlıklı Ortalama: {int(ortalama_degeri) if ortalama_degeri.is_integer() else ortalama_degeri} {harf_str}") else: # 适配其他分数段的字符串返回场景 print(f"Programlama Temelleri I Dersi Ogrenci No: 210911018 Ağırlıklı Ortalama: {ortalama}")
效果说明
修改后运行输出就是你要求的标准格式:Programlama Temelleri I Dersi Ogrenci No: 210911018 Ağırlıklı Ortalama: 95 Harf Notu: A,不会再出现多余的括号和单引号。
内容的提问来源于stack exchange,提问作者Bünyamin Mete
相关产品推荐
相关产品推荐

