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

Coursera作业中Python列表输入引用问题求助

问题分析与解决方案

核心问题

你当前代码的主要问题有两个:

  1. input()获取的是字符串类型,不是数字列表,直接对其执行sum()或遍历运算会触发类型错误(因为字符串的元素是单个字符,无法参与数值计算)。
  2. 变量名与作业要求冲突:注释明确要求使用全局标识符my_list,但你定义了list1,还把均值结果错误赋值给了my_list,导致逻辑混乱。

修正后的完整代码

def stats():
    # 声明使用全局变量my_list(符合作业注释要求)
    global my_list
    # 输出原列表
    print(my_list)
    # 计算均值(仅计算一次,避免重复运算)
    mean = sum(my_list) / len(my_list)
    # 格式化输出均值,保留两位小数
    print(f"mean is {mean:.2f}")
    # 计算总体标准差:先求平方和,再算方差,最后开根号
    squared_diff_sum = sum((x - mean) ** 2 for x in my_list)
    population_std_dev = (squared_diff_sum / len(my_list)) ** 0.5
    # 格式化输出标准差,保留两位小数
    print(f"population standard deviation is {population_std_dev:.2f}")

# 处理系统输入:将输入字符串按空格分割为数字列表,赋值给全局的my_list
my_list = list(map(float, input().split()))
# 调用函数执行统计计算
stats()

关键改动说明

  • 输入处理:input().split()将输入的整段字符串按空格拆分为单个字符串元素,map(float, ...)把每个元素转换为浮点数,最终得到可参与数值计算的数字列表。
  • 全局变量合规:通过global my_list声明函数内使用的是全局作用域的my_list,完全符合作业注释的要求。
  • 计算优化:仅计算一次均值mean,避免重复调用sum(my_list)/len(my_list),既提升效率又减少潜在错误。
  • 简洁输出:使用f-string格式化输出,直接指定保留两位小数,无需手动调用round()再转换字符串,代码更简洁易读。

特殊情况说明

如果Coursera系统已经预先将输入列表绑定到全局的my_list(无需你手动读取输入),只需删除最后两行的输入处理代码,直接调用stats()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:01:22