出于某种原因,在我的数组中的第二个循环之后,代码出于某种原因跳过了一个字符。
我认为这是问题所在:
for word in range(int(len(ShortArray))):
localString = LongArray[word]
#print(word)
if localString[:2] == ShortArray[word]:
print(LongArray[word])
print(word)
完整代码如下:
kleuren = ["Rood","Geel","Groen","Blauw","Wit","Paars","Oranje","Zwart"]
KleurenShort = []
def splitArray(string):
for lenght in range(int(len(string) / 2)):
KleurenShort.append(string[:2])
print(KleurenShort)
string = string.strip(string[:2])
return KleurenShort
def tekst_naar_kleur(string):
return 0
def matchFirst2Letters(ShortArray,LongArray):
for word in range(int(len(ShortArray))):
localString = LongArray[word]
#print(word)
if localString[:2] == ShortArray[word]:
print(LongArray[word])
print(word)
matchFirst2Letters(splitArray("RoGeGrBl"),kleuren)
结果是:
['Ro']
['Ro', 'Ge']
['Ro', 'Ge', 'rB']
['Ro', 'Ge', 'rB', 'l']
应该什么时候:
['Ro']
['Ro', 'Ge']
['Ro', 'Ge', 'Gr']
['Ro', 'Ge', 'Gr', 'Bl']
答案 0 :(得分:4)
问题在于 string.strip()
方法的使用。
'aaaaaabcdb'.strip('ab')
给出 'cd'
作为输入字符串中 'a' 和 'b' 的每个实例都被删除。你可以简单地通过索引去掉输入字符串的前两个字母:
'abcde'[2:]
会给 'cde'
。
在您的代码中实施的更正版本是:
kleuren = ["Rood","Geel","Groen","Blauw","Wit","Paars","Oranje","Zwart"]
KleurenShort = []
def splitArray(string):
for lenght in range(int(len(string) / 2)):
KleurenShort.append(string[:2])
print(KleurenShort)
string = string[2:]
return KleurenShort
def tekst_naar_kleur(string):
return 0
def matchFirst2Letters(ShortArray,LongArray):
for word in range(int(len(ShortArray))):
localString = LongArray[word]
#print(word)
if localString[:2] == ShortArray[word]:
print(LongArray[word])
print(word)
matchFirst2Letters(splitArray("RoGeGrBl"),kleuren)
哪个输出
['Ro']
['Ro', 'Ge']
['Ro', 'Ge', 'Gr']
['Ro', 'Ge', 'Gr', 'Bl']
Rood
0
Geel
1
Groen
2
Blauw
3
通过下面链接的评论中的答案,您的 splitArray
函数就变成了:
def splitArray(string):
return [string[i:i+2] for i in range(0, len(string), 2)]