用for循环将字母连接到字符串

时间:2014-06-12 09:35:04

标签: python for-loop python-3.x concatenation

我想创建一个for循环来检查列表中的项目,如果满足条件, 每次都会在字符串中添加一个字母。

这就是我所做的:

words = 'bla bla 123 554 gla gla 151 gla 10'

def checkio(words):
for i in words.split():
    count = ''
    if isinstance(i, str) == True:
        count += "k"
    else:
        count += "o"

我应该计算结果是' kkookkoko' (5个原因造成5个字符串)。

我从这个函数得到的是count =' k'。

为什么字母不通过我的for循环连接?

请帮忙!

问候..!

2 个答案:

答案 0 :(得分:4)

这是因为您在每次迭代时都将count设置为'',该行应该在外面:

count = ''
for ...:

另外,你可以做到

if isinstance(i, str):

没有必要与== True进行比较,因为isinstance会返回布尔值

使用您的代码,您将始终获得一个充满k的字符串。 为什么?因为words.split()会返回字符串列表,因此if始终为True

您如何解决?您可以使用try-except块:

def checkio(words):
    count = ''
    for i in words.split():
        try: # try to convert the word to an integer
            int(i) 
            count += "o"
        except ValueError as e: # if the word cannot be converted to an integer
            count += "k"
    print count

答案 1 :(得分:1)

您正在重置count在每次循环开始时为空字符串。将count=''放在for循环之前。 您的代码的其他问题:您的函数没有返回值,代码缺少缩进,== True部分已过时。此外words.split()仅在words为字符串时才有效 - 在这种情况下,isinstance(i, str)将始终为真。