专栏首页趣Python# python # # Challenge # Level 2

# python # # Challenge # Level 2

这个是 Python Challenge 的 Level 2。

recognize the characters. maybe they are in the book,
but MAYBE they are in the page source.

网页上也明确的给出了General tips:

  • Use the hints. They are helpful, most of the times.
  • Investigate the data given to you.
  • Avoid looking for spoilers.

很明显,需要去查阅网页源代码。直接查看源代码,发现还真有:

...<!--
find rare characters in the mess below:
--><!--
%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@}$[**$&^{$!@#$%)!@(&
+^!{%_$&@^!}$_${)$_#)!({@!)(^}!*^&!$%_&&}&_#&@{)]{+)%*{&*%*&@%$+]!*__(#!*){%&@++
!_)^$&&%#+)}!@!)&^...
-->

很明显,是要找出下面一大堆mess里面的字母们。

刚开始没关注到上面的注释,以为是做字频统计,代码如下:

# coding=utf-8
# ocr

string = "%%$@_$^__#)^)&!_+]!*@&..." # 太长了,文章贴不下,略去

string_dict = {}
for x in string:
    if x not in string_dict:
       string_dict[x] = 0

while string:
   x = string[0]
   origin_len = len(string)
   string = string.replace(x, '')
   string_dict[x] = origin_len - len(string)
    
print(string_dict)

运行结果:

{'!': 6079, '#': 6115, '%': 6104, '$': 6046, '&': 6043, ')': 6186, '(': 6154, '+': 6066, '*': 6034, '@': 6157, '[': 6108, ']': 6152, '_': 6112, '^': 6030, 'a': 1, 'e': 1, 'i': 1, 'l': 1, 'q': 1, 'u': 1, 't': 1, 'y': 1, '{': 6046, '}': 6105}

看到这个结果才意识到是找单词:

# string 太长了,略去

for x in string:
    if not x.isalpha():
       string = string.replace(x, '')
print(string)

运行结果:

equality

最佳答案1:

print "".join([char for char in text if char.isalpha()])

最佳答案2:

import string
filter(lambda x: x in string.letters, text)

点评:

  • 两个最佳答案都很pythonic,献上我的膝盖

本文分享自微信公众号 - 趣Python(yang-an-china),作者:杨安

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • # python # # Challenge # Level 3

    网页上也没有给出其他提示,这句话的直接翻译就是:一个小写字母,两边各站着三个大个保镖。

    滚神大人
  • # python # # Challenge # Level 1

    g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl...

    滚神大人
  • # python # # 分形 # Sierpinski Carpet 谢尔宾斯基地毯 续

    滚神大人
  • 『Go 内置库第一季:strings』

    这一季的系列主题,主要围绕内置库进行。如果一个人写的代码比你的赞,那么他对内置库的熟悉程度一定比你强。

    谢伟
  • 游戏思维开发社区问答系统的感受

    大家好,最近在开发社区的问答系统,公众账号文章由于志愿者相继有事情,近期就更新的比较少,请大家见谅。本篇给大家讲讲社区系统的部分功能说明,后面必然开源,。

    李海彬
  • PDO::quote讲解

    PDO::quote — 为SQL语句中的字符串添加引号。(PHP 5 = 5.1.0, PECL pdo = 0.2.1)

    砸漏
  • php实现的生成排列算法示例

    砸漏
  • 摩斯码编解码器

      今天是1024,程序员节那就干点儿程序员的事情。刚好,记得上高中时候,看过一部电影,无间道,里边黄秋生和梁朝伟用摩斯码通信,瞬间觉得好神秘,好帅气。最近闲来...

    guokun
  • 两条命令助你成为优秀的 YAML 工程师

    我们在编写 Kubernetes 资源清单的时候可能会经常会忘记要创建的资源名称,即使知道了可能也不记得该资源对象有哪些属性可以使用了,特别是对于那些名称很长的...

    我是阳明
  • 对象存储 Node.js SDK cos-nodejs-sdk-v5 Typescript 声明文件

    用到腾讯云对象存储,使用Node.js SDK cos-nodejs-sdk-v5,没有 typescript 的声明文件,自己写了一个。

    苦少

扫码关注云+社区

领取腾讯云代金券