Python:<;str和int之间不支持
我正在通过自动化枯燥的东西来学习Python,我遇到了一个我不太理解的问题 我试图创建一个简单的for循环,它以以下格式打印列表的元素:Python:<;str和int之间不支持,python,syntax,Python,Syntax,我正在通过自动化枯燥的东西来学习Python,我遇到了一个我不太理解的问题 我试图创建一个简单的for循环,它以以下格式打印列表的元素:W、X、Y和Z 我的代码如下所示: spam = ['apples', 'bananas', 'tofu', 'cats'] def printSpam(item): for i in item: if i < len(item)-1: print (','.join(str(item[i])))
W、X、Y和Z
我的代码如下所示:
spam = ['apples', 'bananas', 'tofu', 'cats']
def printSpam(item):
for i in item:
if i < len(item)-1:
print (','.join(str(item[i])))
else:
print ("and ".join(str(item[len(item)-1])))
return
printSpam(spam)
spam=[‘苹果’、‘香蕉’、‘豆腐’、‘猫’]
def打印垃圾邮件(项目):
第i项:
如果i
我得到了这个错误的回应:
Traceback (most recent call last):
File "CH4_ListFunction.py", line 11, in <module>
printSpam(spam)
File "CH4_ListFunction.py", line 5, in printSpam
if i < len(item)-1:
TypeError: '<' not supported between instances of 'str' and 'int'
回溯(最近一次呼叫最后一次):
文件“CH4_ListFunction.py”,第11行,在
打印垃圾邮件(垃圾邮件)
printSpam中第5行的文件“CH4_ListFunction.py”
如果i TypeError:“Ah,但是数组中i的会迭代每个元素,因此如果i
正在比较字符串(数组元素item
)和整数(len(item)-1:
)
所以,问题是您在Python中被误解了
快速修复
您可以将
的
替换为范围内的i(len(数组)),因为范围的工作原理如下:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
从而获得:
spam = ['apples', 'bananas', 'tofu', 'cats']
def printSpam(item):
for i in range(len(item)):
if i < len(item)-1:
print (','.join(str(item[i])))
else:
print ("and ".join(str(item[len(item)-1])))
return
printSpam(spam)
因此,输出将是:
a,p,p,l,e,s
b,a,n,a,n,a,s
t,o,f,u
cand aand tand s
无论如何,我们可以做得更好
Python支持所谓的索引和负索引(从数组末尾开始)
自
我们有
>>> ", ".join(spam[0:-1])
'apples, bananas, tofu'
及
因此,您可以简单地编写函数
def printSpam(item):
print ", ".join(item[0:-1]) + " and " + item[-1]
就这样。
它起作用了
附言:关于Python和数组表示法的一点:
>>> "Python"[::-1]
'nohtyP'
啊,但是数组中i的
会迭代每个元素,所以如果i
比较字符串(数组元素item
)和整数(len(item)-1:
)
所以,问题是您在Python中被误解了
快速修复
您可以将
的替换为范围内的i(len(数组)),因为范围的工作原理如下:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
从而获得:
spam = ['apples', 'bananas', 'tofu', 'cats']
def printSpam(item):
for i in range(len(item)):
if i < len(item)-1:
print (','.join(str(item[i])))
else:
print ("and ".join(str(item[len(item)-1])))
return
printSpam(spam)
因此,输出将是:
a,p,p,l,e,s
b,a,n,a,n,a,s
t,o,f,u
cand aand tand s
无论如何,我们可以做得更好
Python支持所谓的索引和负索引(从数组末尾开始)
自
我们有
>>> ", ".join(spam[0:-1])
'apples, bananas, tofu'
及
因此,您可以简单地编写函数
def printSpam(item):
print ", ".join(item[0:-1]) + " and " + item[-1]
就这样。
它起作用了
附言:关于Python和数组表示法的一点:
>>> "Python"[::-1]
'nohtyP'
你误解了,
对。。。在…
中工作i
已经是列表中的字符串,而不是索引,因此基本上就是在执行“s”<4
。这没有意义。在本例中,i
是一个字符串。您正在尝试将字符串与列表的长度进行比较。您可以使用列表切片(如item[0:-1]
来获取除最后一项以外的所有项目,而item[-1]
来获取最后一项),而不是循环。用,
加入第一组,然后用和连接到最后一组。@Barmar:argh,你在我回答时抢先一步:)你误解了是如何。。。在…
中工作i
已经是列表中的字符串,而不是索引,因此基本上就是在执行“s”<4
。这没有意义。在本例中,i
是一个字符串。您正在尝试将字符串与列表的长度进行比较。您可以使用列表切片(如item[0:-1]
来获取除最后一项以外的所有项目,而item[-1]
来获取最后一项),而不是循环。用,
加入第一组,然后用和连接到最后一组。@Barmar:argh,你在我回答时抢先一步:)这是我读过的关于Python中表示法的最详细的解释,我有点不好意思忘记了范围()
我的代码中的函数;代码学院至少教会了我这一点。我将返回并尝试使用不同的代码实践,看看这次我是否可以做一些不同的事情。谢谢你的回复!这是我读过的关于Python中的
表示法的
最详细的解释,我有点尴尬,因为我忘记了代码中的range()
函数;代码学院至少教会了我这一点。我将返回并尝试使用不同的代码实践,看看这次我是否可以做一些不同的事情。谢谢你的回复!