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

不使用max()函数,仅用for和if查找列表最大值时if语句出错求助

问题描述

任务要求:不使用max()等函数,仅通过for和if语句实现列表数值的最大值查找。

编写的Python代码如下:

student_scores = input ("Input a list of scores the students have got till now:\n").split(", ")
print ("Okkay, here is your list of student scores: ", student_scores)

max_ = student_scores[0]
for score in student_scores:
    if score > max_:
        max_ = score
print (max_)

当输入列表:11, 44, 8, 234时,输出结果为8,不符合预期;但为score和max_变量添加int()转换后结果正确。请问该if语句出错的原因是什么?

原因分析

问题出在字符串与字符串的比较逻辑上:

  • input()获取的内容默认是字符串类型,split(", ")分割后得到的student_scores列表里的每个元素都是字符串,而非数值类型。
  • 字符串比较是按单个字符的ASCII码值逐个对比的:
    • 初始max_是字符串"11",第一个循环对比"44"和"11":第一个字符"4"的ASCII码(52)大于"1"(49),所以max_更新为"44"。
    • 下一个对比"8"和"44":第一个字符"8"的ASCII码(56)大于"4"(52),所以max_被更新为"8"。
    • 最后对比"234"和"8":第一个字符"2"的ASCII码(50)小于"8"(56),所以max_保持为"8",最终输出8。
  • 当用int()把字符串转换为整数后,就变成了数值大小的比较,此时234会被正确识别为最大值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:05:17