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

Python列表与循环:如何找出对应最大/最小时长的星期?

问题解决

你的代码核心错误在于尝试用字符串列表list1去索引数值列表list2,这不符合Python语法。要找到对应最大/最小时长的星期,需先获取时长列表中最值的索引,再通过索引匹配星期列表里的对应元素。

另外原代码还有两个小问题需要修正:

  • 使用sys.exit()前必须导入sys模块
  • 循环中total += num和total = sum(list2)重复,保留其中一种方式即可

以下是修正后的完整代码:

import sys

list1 = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
list2 = []
total = 0

for x in range(len(list1)):
    try:
        num = float(input(f"Enter amount of hours of exercise for {list1[x]}: "))
        list2.append(num)
        total += num
    except:
        print("Please enter a number.")
        sys.exit()

# 获取最大时长对应的星期
max_hours = max(list2)
max_day = list1[list2.index(max_hours)]

# 获取最小时长对应的星期
min_hours = min(list2)
min_day = list1[list2.index(min_hours)]

print("Day with most amount of exercise: ", max_day)
print("Day with least amount of exercise: ", min_day)
print(f"Total exercise hours: {total}")

代码说明

  1. 先通过max(list2)和min(list2)获取最大、最小时长数值
  2. 用list2.index(最值)得到该数值在时长列表中的位置索引
  3. 用这个索引去list1中取出对应的星期名称

如果存在多天时长相同且同为最值的情况,index()方法只会返回第一个出现该值的索引。如果需要处理这种多最值场景,可以遍历列表收集所有符合条件的星期:

# 处理多个最大值的情况
max_hours = max(list2)
max_days = [list1[i] for i, val in enumerate(list2) if val == max_hours]
print("Day(s) with most amount of exercise: ", ", ".join(max_days))

# 处理多个最小值的情况
min_hours = min(list2)
min_days = [list1[i] for i, val in enumerate(list2) if val == min_hours]
print("Day(s) with least amount of exercise: ", ", ".join(min_days))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:10:55