【Python CheckiO 题解】Secret Message


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Secret Message】:找到一个字符串中所有的大写字母,返回结果为字符串形式,且大写字母要按照原字符串中的顺序排列。

【链接】https://py.checkio.org/mission/secret-message/

【输入】:一段文本(unicode)

【输出】:所有大写字母组成的字符串或者空字符串

【前提】: 0 < len(text) ≤ 1000

【范例】

find_message("How are you? Eh, ok. Low or Lower? Ohhh.") == "HELLO"
find_message("hello world!") == ""

解题思路

直接利用 re 模块的 findall 方法,提取原字符串中的所有大写字母,然后再用 join() 方法将所有大写字母转换成字符串即可

代码实现

import re
def find_message(text: str) -> str:
    """Find a secret message"""
    text = re.findall('[A-Z]', text)
    text = ''.join(text)
    return text

if __name__ == '__main__':
    print('Example:')
    print(find_message("How are you? Eh, ok. Low or Lower? Ohhh."))
    
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert find_message("How are you? Eh, ok. Low or Lower? Ohhh.") == "HELLO", "hello"
    assert find_message("hello world!") == "", "Nothing"
    assert find_message("HELLO WORLD!!!") == "HELLOWORLD", "Capitals"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

大神解答

大神解答 NO.1

def find_message(text: str) -> str:
    """Find a secret message"""
    return "".join(s for s in text if s.isupper()== True)

大神解答 NO.2

def find_message(text: str) -> str:
    return ''.join(list(filter(lambda x: x.isupper(), text)))

大神解答 NO.3

def find_message(text):
    """Find a secret message"""
    message = ''
    for i in text:
        if i.isupper(): message +=i
    return message
发布了135 篇原创文章 · 获赞 475 · 访问量 44万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览