You need to enable JavaScript to run this app. Python 利用可变参数*args实现列表元素平方的函数习题
优惠活动
大模型
产品
解决方案
定价
更多

Python 利用可变参数*args实现列表元素平方的函数习题

现有参考代码存在的问题
  • 命名冲突:自定义函数命名为list(),直接覆盖Python内置的list类型构造方法,后续代码如果需要使用内置list做类型转换会触发异常,属于编程规范中的典型错误。
  • 输入值类型错误:循环接收列表元素时直接读取input()的返回值,所有元素都是字符串类型,无法直接参与数值平方运算,未做数值类型转换。
  • 平方函数逻辑完全偏离需求:
    • 运算逻辑写为args[i]*=2,实现的是“元素乘2”而非“元素取平方”,和题目要求完全不符
    • 可变参数*args使用逻辑错误:传入listA时,整个列表会被当作args元组的第一个元素,循环遍历的是args的长度(固定值1),根本没有触达列表内部的每个元素,最终执行的操作是把整个列表做重复拼接,而非修改列表内元素的值
    • 函数没有配套输出逻辑,调用完平方函数后没有任何可感知的计算结果,不符合习题要求的“通过自定义函数实现平方计算并展示结果”的目标
  • 函数耦合性过高:录入列表元素的函数直接硬编码操作全局变量listA,没有把列表作为参数传入函数,完全不具备函数复用能力。
修正后的可运行实现代码
# 初始化空列表存储输入元素
listA = []
# 获取用户输入的列表元素总数
n = int(input("Enter number of elements in the list : "))

# 重命名函数避免覆盖内置类型,把目标列表作为参数传入
def input_elements(n, target_list):
    print("\nEnter the elements of your list: ")
    for i in range(n):
        # 将输入的字符串转换为整数,支撑后续数值运算
        element = int(input())
        target_list.append(element)

# 调用元素录入函数
input_elements(n, listA)
print("\nThe entered list is: \n", listA)

# 自定义平方计算函数,接收列表作为参数,体现可变对象的传递逻辑
def square_elements(num_list):
    # 遍历列表的每个下标,对对应元素做平方运算
    for i in range(len(num_list)):
        num_list[i] = num_list[i] ** 2

# 调用平方计算函数
square_elements(listA)
print("\nThe squared list is: \n", listA)

代码设计贴合习题考察方向:通过列表作为可变类型的函数传参,直观体现Python的变量传递逻辑——列表属于可变对象,函数内对列表元素的修改会同步作用于外部传入的原列表对象,同时彻底修正了原代码中命名冲突、类型不匹配、逻辑偏离的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 07:06:04