我想创建一个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循环连接?
请帮忙!
问候..!
答案 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)
将始终为真。