字典分值:10
来源: Ph0enix 难度:易参与人数:1324人Get Flag:304人答题人数:371人解题通过率:82%
包含ctf的单词的总字符有多少?
格式:CTF{}
解题链接: http://ctf5.shiyanbar.com/ppc/dictionary.zip 通过
解题过程:
一开始看到题目以为是求本文中’ctf’字符串出现的次数,写了如下代码:
import re
fo = open("dictionary.txt")
fo.seek(0,0)
list1=re.findall("ctf",fo.read())
print(len(list1))
输出:
30
[Finished in 0.2s]
果然too young too simple啊。看了题解,发现是文本中存在若干单词中包含着’ctf’字符串,要我们求的是单词的总字符个数。这也不难解释刚开始print(fo.read())时,程序竟然一个单词一个单词的输出(我还以为我电脑崩了= =!请原谅我的…天真),这说明题目给的文件是一个一个单词的,而且这些单词中间是有回车或者空格啥的。所以这就好办了。
正确的源代码如下:
import re
fo = open("dictionary.txt")
fo.seek(0,0)
length=0
for str in fo:
if 'ctf' in str:
length=length+len(str.strip()) #strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
print(length)
输出:
310
[Finished in 0.4s]
注:= =本人已经很久没写python了,有点生疏。这里提示的是…for str in fo: 这里是fo而不是 fo.read()
用type(f.read())显示的是字符串类型…可能for这种要用迭代类型,string不行…具体记不清了= =希望我有空能再好好学一下….虽然希望渺茫= =。
我看到了我原来写的笔记:这就是问题的了
.什么是可迭代对象?可迭代对象可以使用for in
内部有iter方法的对象就是可迭代对象
可迭代对象有:列表,元组,字符串,字典,生成器对象