Python 对于范围内的i:TypeError:';类型';对象是不可编辑的

Python 对于范围内的i:TypeError:';类型';对象是不可编辑的,python,Python,假设您有如下列表值: spam=[“苹果”、“香蕉”、“豆腐”、“猫”] 编写一个函数,该函数将列表值作为参数,并返回一个字符串,其中所有项都用逗号和空格分隔,最后一项前插入“and” 例如,将先前的垃圾邮件列表传递给函数将返回“苹果、香蕉、豆腐和猫”,但您的函数应该能够处理传递给它的任何列表值 我的鳕鱼在下面。运行时,它显示TypeError和print(值,sep=',')不起作用;它们不是用逗号和空格分隔的 def command(arg): arg.insert(-1, 'and

假设您有如下列表值:

spam=[“苹果”、“香蕉”、“豆腐”、“猫”]

编写一个函数,该函数将列表值作为参数,并返回一个字符串,其中所有项都用逗号和空格分隔,最后一项前插入“and”

例如,将先前的
垃圾邮件
列表传递给函数将返回
“苹果、香蕉、豆腐和猫”
,但您的函数应该能够处理传递给它的任何列表值

我的鳕鱼在下面。运行时,它显示
TypeError
print(值,sep=',')
不起作用;它们不是用逗号和空格分隔的

def command(arg):
    arg.insert(-1, 'and')
    value = arg
    for i in range:
        print(value, sep =', ')


spam = []
while True:
    print('Enter the list values:')
    listvalue = input()
    if listvalue == '':
        break
    spam = spam + [listvalue]
command(spam)

必须使用指定范围值。如果值是一个列表,则可能
范围(len(value))


您将得到异常
TypeError:“type”对象不可编辑,因为您正在引用类
范围而不是调用它。

for循环需要一个起点和终点

这将返回“this is printed”10次

for i in range(0,9):
    print("This is printed")

下面是实现这一点的代码

def listfunction(stringList):
    strings = ''
    j=0
    for i in range(len(stringList)):
        j=i
        if j == (len(stringList)-1):
            strings = strings + 'and ' + str(stringList[i]) + '.'
        else:
            strings = strings + str(stringList[i]) + ',' + ' '
        #print(strings)   
    return strings

范围内的i的
<代码>范围
什么?
对于范围内的i
…确切的范围是什么…?有人说“什么范围”了吗?实际上
范围
没有在您的
命令
函数中定义我必须从索引[0]打印到索引[-1]。所以我会在(分层列表索引)到(最后一个列表索引)的范围内,对吗?他没有调用函数,这就是问题所在…是的,我的意思是他调用的是对象而不是函数,我应该说得更清楚。不,他试图迭代一个函数对象(不调用它)…@Tiphaine他仍然没有调用任何东西。“调用”是指“应用调用操作符”(即参数),这将激活对象的
\uu调用方法(如果它当然有一个-否则您会得到一个
类型错误
“对象不可调用”)。另外,在Python3中,
range
是一个类,而不是一个函数。所以它将是我在范围(分层列表索引)到(最后一个列表索引)的权利?是的,你应该能够这样做。就个人而言,如果你想这样做,我会创建一个等于列表长度的变量,并在for循环中使用该变量作为端点,这样代码仍然可以使用不同长度的列表运行