Python 我得到了;TypeError:字符串索引必须是整数;即使我';m使用整数

Python 我得到了;TypeError:字符串索引必须是整数;即使我';m使用整数,python,for-loop,Python,For Loop,我很早就开始学习python(现在只学习循环),我遇到了一些问题 正如您所看到的,我使用的是整数(正如我使用type()检查的那样),但它仍然会引发TypeError。知道为什么或如何修复它吗?问题是逗号,用于索引字符串。您必须使用冒号: is的正确语法(开始:停止[:步骤]) item=mystring[0:6]#从索引0开始,在索引6停止(不包括) item=mystring[:6]#相同的符号,从索引0开始 这只是一个语法问题。如果要将所有字符都设置为索引6,则需要执行以下操作 my_s

我很早就开始学习python(现在只学习循环),我遇到了一些问题


正如您所看到的,我使用的是整数(正如我使用
type()
检查的那样),但它仍然会引发TypeError。知道为什么或如何修复它吗?

问题是逗号
用于索引字符串。您必须使用冒号
is的正确语法(开始:停止[:步骤])

item=mystring[0:6]#从索引0开始,在索引6停止(不包括)
item=mystring[:6]#相同的符号,从索引0开始

这只是一个语法问题。如果要将所有字符都设置为索引6,则需要执行以下操作

my_string[0:6] 
实际上,您通常会使用较短的版本(具有相同的功能):

此外,在代码中,您可能希望

my_string[pos1:pos2] 
目前,您可以获得
pos1
pos2
,但不使用它

最后,您可以搜索“如何在Python中从字符串中获取前6个字符”,您可能已经自己找到了答案,例如。在线搜索您的问题并找到解决方案可能是您现在需要的最重要的技能:)

快乐编码

def make_list(my_string):
my_string += ' '
grocery_list = []
pos1 = 0
for item in range(my_string.count(",") + 1):
    pos2 = my_string.find(",", pos1)
    grocery_list += [my_string[pos1:pos2]]
    pos1 = pos2+1
print(grocery_list)
调用函数make_list('tomato,apple,orange')

这段代码在我的电脑里工作。我希望您能找到问题的答案。

问题出现在第8行,您试图将字符串分成多个部分,但语法错误。您将必须按以下步骤执行操作:

item = my_string[:6] # starting index is 0 by default, and final index is 6-1, i.e., 5
item = my_string[0:6] # starting index is 0, and final index is 6-1, i.e., 5
item = my_string[0:6:1] # starting index is 0, and final index is 6-1, i.e., 5, with a jump of 1 character to the right, i.e., index 0,1,2,3,4 and 5.
其中任何一个都会产生相同的结果,而不是

item = my_string[0,6]
因为这将返回
TypeError
,您只需执行即可轻松验证

"Hello"[0,6]
附言:你可以通过这样做来达到同样的最终结果

print(my_string.split(','))
正如一位板球运动员所建议的那样。另外,如果希望用户输入字符串,请尝试以下操作

grocery_list = input("enter a comma separated string without spaces: ").split(',')
print(grocery_list)

享受编码的乐趣

欢迎来到stackoverflow。请拿着这本书读一读;没有帮助。
0,6
是一个元组,而不是整数。请在第8行使用冒号(:)而不是逗号解释您试图对代码执行的操作,而不仅仅是代码和错误。看起来您只需要
打印(my_string.split(','))
首先,我确实使用了pos1 pos2,因为循环的每次重复都会重新定义它们,但是它给了我语法错误,所以我检查了它们的位置整数,最后用两个数字重新访问了它们,以确保我使用的是整数。我很清楚,如果使用“find”方法,它应该是一个逗号
grocery_list = input("enter a comma separated string without spaces: ").split(',')
print(grocery_list)