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相关推荐

  1. Python CheckiO 题解系列 丨 博客目录索引

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...

  2. 【Python CheckiO 题解】Army Battles

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  3. 【Python CheckiO 题解】Date and Time Converter

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  4. 【Python CheckiO 题解】Largest Rectangle in a Histogram

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  5. 【Python CheckiO 题解】Roman Numerals

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  6. 【Python CheckiO 题解】Probably Dice

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  7. 【Python CheckiO 题解】Multicolored Lamp

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  8. 【Python CheckiO 题解】Time Converter (12h to 24h)

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  9. 【Python CheckiO 题解】Speech Module

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

最新文章

  1. java web mvc思想介绍
  2. 【C语言学习笔记】——1.起始
  3. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)
  4. ​KDD 2020 开源论文 | 图神经网络多变量时序预测
  5. spoolsv.exe占cpu 99%的解决方法(转)
  6. 实测6大App「青少年模式」:有徒具形式,也有虚情假意!
  7. x200装linux驱动下载,佳能 ThinkPad X200 Tablet 驱动程序下载-更新佳能软件(平板电脑)...
  8. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、影子方向)...
  9. UG NX 12同步建模:调整面大小
  10. 无线路由器DNS服务器解析,路由器DNS劫持简单实现和防范分析
  11. 动漫人物各种角度的画法大合集
  12. Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)
  13. [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
  14. 服务器 进 pe系统安装系统安装系统,用U盘安装系统之PE安装.doc
  15. 深圳关内主要旅游景点地址和公交路线
  16. UE4中部分物理概念的单位
  17. 用httpUrlConnection实现文件上传
  18. 计算机网络实验感想6,计算机网络实验项目六
  19. XMIND中调整某一主题中英文大小写
  20. MAC系统分区的目录结构

热门文章

  1. 常用WebServices返回数据的4种方法比较
  2. 开始-运行 下常用快捷命令
  3. 使用MvcContrib的FormHelper
  4. 85. Maximal Rectangle
  5. Dijkstrala算法
  6. [Leedcode][JAVA][第33题][搜索旋转排序数组]
  7. 仿苹果涂鸦软件_这些iPhone自带软件,学会一个少装十几个APP,16G手机也够用
  8. 封包时发现的关于QIODevice类write函数的坑
  9. 十进制小数化为二进制小数的方法是什么_十进制转成二进制的两种方式
  10. z-wave问题汇总