Python*args平方使用列表

Python*args平方使用列表,python,python-3.x,list,function,Python,Python 3.x,List,Function,给我这个问题是为了理解函数的使用以及传递不同的变量和类型。 它告诉我们制作一个列表,并使用函数分配任务 listA=[] n = int(input("Enter number of elements in the list : ")) def list(n): print("\nEnter the elements of your list: ") for i in range(n): i=input()

给我这个问题是为了理解函数的使用以及传递不同的变量和类型。 它告诉我们制作一个列表,并使用函数分配任务

listA=[]
n = int(input("Enter number of elements in the list : "))
def list(n):
    print("\nEnter the elements of your list: ")
    for i in range(n):
        i=input()
        listA.append(i)
list(n)
print("\nThe entered list is: \n",listA)
def square(*args):
    for i in range(len(args)):
         args[i]*=2
square(listA)

下面是一个使用列表理解的快速简便解决方案:

number=int(输入('输入一个数字:'))
打印([i**2表示范围内的i(1,数字+1)])
那么这意味着什么:

我希望您理解输入和打印部分

关于列表理解:

基本上,它会附加到我提出的2的幂的列表中,并且它会对范围内的每个i都这样做,比如1,2,3等等

换言之:

列表将附加到自身,1提升到2的幂,然后2提升到2的幂,然后3提升到2的幂,直到达到范围(例如5,因此它将继续添加到列表方块,直到i为5,这将是范围的结束)

这是否满足以下要求:

n=int(输入('要平方多少?:'))
给定的def(数量):
温度=[]
对于范围内的i(1,数量+1):
临时附加(i)
返回温度
def方形(列表):
返回[i**2代表列表中的i]
打印(正方形(给定(n)))

您的square函数根本不起作用,如果您向它传递一个列表(正如您正在做的),那么args将是一个元组:(listA,)-即一个单元素元组,其中args[0]是您传递的列表。然后根据元组的长度循环遍历该元组,并尝试更改该元组

问题是,您遇到的第一个元素是您的列表,然后您尝试执行与listA*2等效的操作-以便复制listA并将其存储回元组(oops)-如果您的代码失败,我不会感到惊讶

当你打电话的时候

square(listA) 
您正在将一个参数传递给square函数-该参数恰好是一个整数列表,但它是一个单独的东西

因此,您需要做的是将数字列表转换为一系列数字,您可以使用*运算符进行转换,如下所示:

square(*listA)
此处的*运算符将列表解压为其各个项目

这样做的问题是,因为现在函数得到了多个整数,所以您在函数内部对args(args)所做的更改现在不会更改listA


但是请注意-问题陈述中说要使用介于1和用户给定的限制之间的值:并不是说您应该使用用户给定的任意值-因此,尽管您的解决方案会“起作用”,但它实际上并没有执行要求的操作。

我不确定为什么这个问题需要变量参数,但请去掉解包(*)在square函数中,它将消除运行时错误。代码中还有其他不正确的地方。第一个是您需要在list函数中附加int(i)(该名称需要更改),第二个是*=不与值平方。有关更新的建议,请参见我的代码

listA = []
n = int(input("Enter number of elements in the list : "))


def _list(n):
    print("\nEnter the elements of your list: ")
    for i in range(n):
        i = input()
        listA.append(int(i))


_list(n)
print("\nThe entered list is: \n", listA)


def square(args):
    for i in range(len(args)):
        args[i] = args[i]*args[i]


square(listA)
print('The squared list is: \n', listA)
例如:

Enter number of elements in the list : 4

Enter the elements of your list: 
3
6
1
6

The entered list is: 
 [3, 6, 1, 6]
The squared list is: 
 [9, 36, 1, 36]

这不是一个解决方案,但是调用函数“list”是一个非常糟糕的主意——虽然你的代码可以工作,但这是一个非常坏的习惯。哦,好的,我会这样做的。ThanksIt不满足编写使用变量参数的函数的要求。很明显,导师只是想创造繁忙的工作。@TonySuffolk66我想我错过了这一部分,但现在是吗?你的两个函数都使用固定数量的参数。另外,由于
square
函数改变了列表的位置,因此也返回列表是不正常的。@TonySuffolk66好的,我知道我的答案在这种情况下基本上没有帮助,但为什么也返回特定的列表是不正常的?那么我应该怎么做呢?@Matiss-如果你查看标准库(例如)函数/方法,它们在适当的位置修改对象,它不会返回相同的对象(例如
list.sort()
list.append()
这两个函数都不返回任何值。这似乎是一种惯例-要么就地修改,要么返回一个新对象。如果您有充分的理由让函数同时执行这两个操作,那就太好了。,
n = int(input("Enter number of elements in the list : "))
listA = list(range(1, n + 1))
print("\nThe entered list is: \n", listA)
def square(args):
    for i in range(len(args)): args[i]**=2
square(listA)
print(listA)