我不确定我做错了什么。这是我的代码:
_CREAT
我想看到以下内容:
int fd = shm_open("/abc", O_RDWR | O_EXCL, 0777);
然而我得到了:
def divideEnTam(cadena, num):
lista=[]
for x in range (0, len(cadena)//num):
lista.append(cadena[(x-num), x])
print (lista)
divideEnTam("Paracaidas", 2)
我做错了什么?
答案 0 :(得分:1)
字符串切片由:
完成,而不是,
。
尝试以下方法:
def divideEnTam(cadena, num):
lista=[]
for x in range (0, len(cadena)//num):
lista.append(cadena[(x-num):x]) # Fixed slicing
print (lista)
divideEnTam("Paracaidas", 2)
答案 1 :(得分:1)
你必须以简单的方式做到这一点
def divideEnTam(cadena, num):
return [cadena[i:i+num] for i in range(0, len(cadena), num)]
divideEnTam("Paracaidas", 2)
答案 2 :(得分:0)
你没有注意python告诉你什么。
当您运行程序时,您将获得追溯:
Traceback (most recent call last):
File "so17405138.py", line 7, in <module>
divideEnTam("Paracaidas", 2)
File "so17405138.py", line 4, in divideEnTam
lista.append(cadena[(x-num), x])
TypeError: string indices must be integers
回溯中的最后一行告诉您问题所在,即字符串索引必须是整数。然后,当您向上阅读时,您会发现问题出在第4行:
lista.append(cadena[(x-num), x])
如果你按照表达方式工作,你可以先尝试这样的事情:
>>> cadena = "Paracaidas"
>>> cadena[(4-3), 4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
会告诉你[]
内部的内容有问题。你知道4-3和4的结果都是整数,所以接下来你可以尝试检查那个表达式是什么:
>>> x = (4-3), 4
>>> print(type(x), repr(x))
<class 'tuple'> (1, 4)
啊,哈哈!事实证明,(4-3), 4
是元组。如果您阅读了更多about tuples,您会发现它们实际上并未由括号定义,而是由逗号定义。您可能想要的是切片,您可以将,
替换为:
来获得。
但是,如果您尝试:
def divideEnTam(cadena, num):
lista=[]
for x in range (0, len(cadena)//num):
lista.append(cadena[(x-num): x])
print (lista)
divideEnTam("Paracaidas", 2)
你会发现自己出了问题:
['', '', 'Pa', 'ar', 'ra']
如果您暂时考虑一下,并将您的陈述调整为:
for x in range (0, len(cadena)//num):
print(x-num, x)
您会看到此输出:
-2 0
-1 1
0 2
1 3
2 4
如果您发现这是从-2
开始的。它不是您真正想要的输出。你想要更像这样的东西:
0 2
2 4
4 6
6 8
8 10
你知道如何使用range 吗?