【Python CheckiO 题解】Striped Words
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
题目描述
【Striped Words】:系统会为您提供带有不同单词的文本块,这些单词由空格和标点符号分隔,数字在此任务中不被视为单词(字母和数字的混合体也不是单词),您应该统计辅音和元音交替出现的单词的数量,即:您统计的单词不能有两个连续的元音或辅音,由单个字母组成的单词不计算在内。元音:AEIOUY;辅音:BCDFGHJKLMNPQRSTVWXZ。
【链接】:https://py.checkio.org/mission/striped-words/
【输入】:字符串(unicode)
【输出】:整数
【前提】:文本仅包含ASCII符,0 < len(text) < 105
【范例】:
checkio("My name is ...") == 3
checkio("Hello world") == 0
checkio("A quantity of striped words.") == 1, "Only of"
checkio("Dog,cat,mouse,bird.Human.") == 3
解题思路
首先把所有的 ,
和 .
都替换成空格,然后以空格为分隔符将原字符串进行分割,循环访问每一个字符,若相邻两个字符都是元音或辅音,或者字符是数字,或者是单个字符,则表示该单词不符合要求,设置标记符 n
,如果不符合要求则为 0,符合要求则为 1,最后返回 n
的和即可。
代码实现
VOWELS = "AEIOUY"
CONSONANTS = "BCDFGHJKLMNPQRSTVWXZ"def checkio(text):text = text.replace(',', ' ').replace('.', ' ').split()num = 0n = 0for i in text:if len(i) < 2:n = 0for j in range(len(i)-1):if (i[j].upper() in CONSONANTS and i[j+1].upper() in CONSONANTS) or (i[j].upper() in VOWELS and i[j+1].upper() in VOWELS) or i[j].isdigit():n = 0breakelse:n = 1num += nreturn num# These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':assert checkio("My name is ...") == 3, "All words are striped"assert checkio("Hello world") == 0, "No one"assert checkio("A quantity of striped words.") == 1, "Only of"assert checkio("Dog,cat,mouse,bird.Human.") == 3, "Dog, cat and human"
大神解答
大神解答 NO.1
VOWELS = "AEIOUY"
CONSONANTS = "BCDFGHJKLMNPQRSTVWXZ"
PUNCTUATION = ",.!?"def checkio(text):text = text.upper()for c in PUNCTUATION:text = text.replace( c, " " )for c in VOWELS:text = text.replace( c, "v" )for c in CONSONANTS:text = text.replace( c, "c" )words = text.split( " " )count = 0for word in words:if len( word ) > 1 and word.isalpha():if word.find( "cc" ) == -1 and word.find( "vv" ) == -1:count += 1return count
大神解答 NO.2
import reVOWELS = "AEIOUY"
CONSONANTS = "BCDFGHJKLMNPQRSTVWXZ"def checkio(text):return len(re.findall(r'''(?ix) (?#Case-insensitive, verbose)\b( (?#Surrounding word boundaries)(?:(?: [{cons}] [{vow}] )+ [{cons}]?) (?#Word starting with consonant)| (?#Alternative templates)(?:(?: [{vow}] [{cons}] )+ [{vow}]?) (?#Word starting with vowel))\b'''.format(vow=VOWELS, cons=CONSONANTS), text))
大神解答 NO.3
import re
checkio=lambda t:sum(any(all('@'<c and j^(c in'aeiouyAEIOUY')^i&1
for i,c in enumerate(w))for j in(0,1))for w in re.findall(r"\w\w+",t))
大神解答 NO.4
import reVOWELS = "AEIOUY"
CONSONANTS = "BCDFGHJKLMNPQRSTVWXZ"def checkio(text):return len(re.findall(rf'(?:\b(?:[{CONSONANTS}][{VOWELS}])+[{CONSONANTS}]?\b|\b(?:[{VOWELS}][{CONSONANTS}])+[{VOWELS}]?\b)', text.upper()))
【Python CheckiO 题解】Striped Words相关推荐
- Python CheckiO 题解系列 丨 博客目录索引
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...
- 【Python CheckiO 题解】Army Battles
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Date and Time Converter
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Largest Rectangle in a Histogram
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Roman Numerals
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Probably Dice
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Multicolored Lamp
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Time Converter (12h to 24h)
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Speech Module
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
最新文章
- java web mvc思想介绍
- 【C语言学习笔记】——1.起始
- ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)
- ​KDD 2020 开源论文 | 图神经网络多变量时序预测
- spoolsv.exe占cpu 99%的解决方法(转)
- 实测6大App「青少年模式」:有徒具形式,也有虚情假意!
- x200装linux驱动下载,佳能 ThinkPad X200 Tablet 驱动程序下载-更新佳能软件(平板电脑)...
- 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、影子方向)...
- UG NX 12同步建模:调整面大小
- 无线路由器DNS服务器解析,路由器DNS劫持简单实现和防范分析
- 动漫人物各种角度的画法大合集
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)
- [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
- 服务器 进 pe系统安装系统安装系统,用U盘安装系统之PE安装.doc
- 深圳关内主要旅游景点地址和公交路线
- UE4中部分物理概念的单位
- 用httpUrlConnection实现文件上传
- 计算机网络实验感想6,计算机网络实验项目六
- XMIND中调整某一主题中英文大小写
- MAC系统分区的目录结构
热门文章
- 常用WebServices返回数据的4种方法比较
- 开始-运行 下常用快捷命令
- 使用MvcContrib的FormHelper
- 85. Maximal Rectangle
- Dijkstrala算法
- [Leedcode][JAVA][第33题][搜索旋转排序数组]
- 仿苹果涂鸦软件_这些iPhone自带软件,学会一个少装十几个APP,16G手机也够用
- 封包时发现的关于QIODevice类write函数的坑
- 十进制小数化为二进制小数的方法是什么_十进制转成二进制的两种方式
- z-wave问题汇总