【Python CheckiO 题解】Speech Module


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


题目描述

【Speech Module】:输入一个数字,将其转换成英文表达形式,字符串中的所有单词必须以一个空格字符分隔。

【链接】:https://py.checkio.org/mission/speechmodule/

【输入】:一个数字(int)

【输出】:代表数字的英文字符串(str)

【前提】:0 < number < 1000

【范例】

checkio(4)=='four'
checkio(143)=='one hundred forty three'
checkio(12)=='twelve'
checkio(101)=='one hundred one'
checkio(212)=='two hundred twelve'
checkio(40)=='forty'

解题思路

将输入的数字分为四种情况:

  • 0 ≤ 数字 < 10:直接返回 FIRST_TEN[number - 1] 即可;

  • 10 ≤ 数字 < 20:直接返回 SECOND_TEN[number - 10] 即可;

  • 20 ≤ 数字 < 100:如果是 10 的倍数(number % 10 == 0),直接返回 OTHER_TENS[number // 10 - 2] 即可,如果不是 10 的倍数(number % 10 != 0),那么就要将其十位和个位连起来,即:OTHER_TENS[number // 10 - 2] + ' ' + FIRST_TEN[number % 10 - 1]

  • 100 ≤ 数字 < 999:与第三种情况类似,实现判断是不是 100 的倍数,如果是则直接返回 FIRST_TEN[number // 100 - 1] + ' ' + HUNDRED,如果不是,则判断其除以 100 的余数是不是 10 的倍数,也就是后两位是不是 10 的倍数,即重复第三步即可。

代码实现

FIRST_TEN = ["one", "two", "three", "four", "five", "six", "seven","eight", "nine"]
SECOND_TEN = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen","sixteen", "seventeen", "eighteen", "nineteen"]
OTHER_TENS = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy","eighty", "ninety"]
HUNDRED = "hundred"def checkio(number):if 0 <= number < 10:english = FIRST_TEN[number - 1]return englishelif 10 <= number < 20:english = SECOND_TEN[number - 10]return englishelif 20 <= number < 100:if number % 10 == 0:english = OTHER_TENS[number // 10 - 2]return englishelse:english = OTHER_TENS[number // 10 - 2] + ' ' + FIRST_TEN[number % 10 - 1]return englishelse:if number % 100 == 0:english = FIRST_TEN[number // 100 - 1] + ' ' + HUNDREDreturn englishelse:english = FIRST_TEN[number // 100 - 1] + ' ' + HUNDRED + ' ' + checkio(number % 100)return englishif __name__ == '__main__':# These "asserts" using only for self-checking and not necessary for auto-testingassert checkio(4) == 'four', "1st example"assert checkio(133) == 'one hundred thirty three', "2nd example"assert checkio(12) == 'twelve', "3rd example"assert checkio(101) == 'one hundred one', "4th example"assert checkio(212) == 'two hundred twelve', "5th example"assert checkio(40) == 'forty', "6th example"assert not checkio(212).endswith(' '), "Don't forget strip whitespaces at the end of string"print('Done! Go and Check it!')

大神解答

大神解答 NO.1

FIRST_TEN = ["one", "two", "three", "four", "five", "six", "seven","eight", "nine"]
SECOND_TEN = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen","sixteen", "seventeen", "eighteen", "nineteen"]
OTHER_TENS = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy","eighty", "ninety"]
HUNDRED = "hundred"def checkio(number):n = number // 100t = [FIRST_TEN[n-1], HUNDRED] if n > 0 else []n = (number // 10) % 10t += [OTHER_TENS[n-2]] if n > 1 else []n = number % (10 if n > 1 else 20)t += [(FIRST_TEN+SECOND_TEN)[n-1]] if n > 0 else []return ' '.join(t)

大神解答 NO.2

# migrated from python 2.7
def checkio(number):l=["","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"]d=dict(enumerate(l))d.update({30:"thirty",40:"forty",50:"fifty",60:"sixty",70:"seventy",80:"eighty",90:"ninety"})h=number//100if h:return (d[h]+" hundred "+checkio(number%100)).strip()if number in d:return d[number]return d[number//10*10]+" "+d[number%10]

大神解答 NO.3

def checkio(n, d=dict(enumerate(" one two three four five six seven eight nine ten eleven twelve".split(" ")))):def i(s, j=iter("o en ree ir ve f t ".split(" "))):for k in j: s = __import__("re").sub(k + "$", next(j), s)return sreturn(d[n//100]+" hundred "*(n>99)+d.get(n%100,n%100<20and i(d[n%10])+"teen"or i(d[n//10%10]).replace("u","")+"ty "+d[n%10])).strip()

大神解答 NO.4

FIRST_TEN = ["one", "two", "three", "four", "five", "six", "seven","eight", "nine"]
SECOND_TEN = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen","sixteen", "seventeen", "eighteen", "nineteen"]
OTHER_TENS = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy","eighty", "ninety"]
HUNDRED = "hundred"def checkio(number):ret =''h = number//100t = (number - h*100)//10f = number - h*100 - t*10if h > 0:ret += FIRST_TEN[h-1] + ' ' + HUNDRED + ' 'if t == 0 and f > 0:ret += FIRST_TEN[f-1] + ' 'elif t == 1:ret += SECOND_TEN[f] + ' 'elif t>1:ret += OTHER_TENS[t-2] + ' 'if f>0:ret += FIRST_TEN[f-1] + ' 'return ret[:-1]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dynamics 365 Online和On-premises在开发方式上的差别

1、新建账号的不同&#xff1a;on-premises(下文简称op)是和ad绑定的&#xff0c;所以必须先在ad中新建账号后才能在CRM中新建。而online是和Office365(下文简称O365)绑定的&#xff0c;所以需在O365中新建账号再分配D365许可(前提是已购买license),当分配完许可后&#xff0c;…

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

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

【转】Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件&#xff0c;版本号9.0.2&#xff0c;随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 …

【Python CheckiO 题解】Multicolored Lamp

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

【转】五大方法,彻底永久关闭win10自动更新的方法【已验证有效】

自从微软大面积使用某员工后&#xff0c;思路越来越奇葩了&#xff0c;前天工作没做完&#xff0c;放在那里&#xff0c;第二天毫无羞耻的就给你重启了&#xff0c;那一瞬间&#xff0c;真想拿dollar到对面slay。于是就有下文&#xff0c;大部分内容是从网上摘录、归纳起来的。…

【Python CheckiO 题解】Probably Dice

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

【Python CheckiO 题解】Roman Numerals

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

Dynamics CRM 2016 安装

Dynamics CRM 2016 安装 CRM 2016出来了一段时间了&#xff0c;一直也没机会尝试一下&#xff0c;现在再测试ADFS的时候顺手装一个测试环境&#xff0c;记录一下整个安装配置流程。 首先准备好windows 2012 std&#xff0c;sql server 2014&#xff0c; dynamics crm2016安装…

【Python CheckiO 题解】Largest Rectangle in a Histogram

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

Dynamics 365 on-premises 安装

安装Dynamics 365环境配置要求&#xff1a; 系统版本&#xff1a;Windows Server 2016 SQL 版本&#xff1a; Microsoft SQL Server 2016 SP2 Dynamics 365 版本&#xff1a;CRM9.0-Server-CHS-amd64 安装步骤&#xff1a; 一.在虚拟机安装Windows Server 2016 二.安装好…

【Python CheckiO 题解】Date and Time Converter

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

2.1Dynamics 365 安装问题——无法访MSCRM_CONFIG数据库

1&#xff0e; 问题 2&#xff0e; 原因 出现此问题的一个或多个下列条件都为真︰ 在多务器中安装 Microsoft Dynamics 365。然后&#xff0c;直接在运行 Microsoft SQL Server 的服务器上安装 Microsoft Dynamics 365。但是&#xff0c;没有设置某些 SQL Server 权限。Mic…

【Python CheckiO 题解】Army Battles

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

Dynamics 365 On-premises和Online 的不同

1、新建账号的不同&#xff1a;on-premises(下文简称op)是和ad绑定的&#xff0c;所以必须先在ad中新建账号后才能在CRM中新建。而online是和Office365(下文简称O365)绑定的&#xff0c;所以需在O365中新建账号再分配D365许可(前提是已购买license),当分配完许可后&#xff0c;…

华中科技大学文华学院 CSDN 高校俱乐部成立啦!

CSDN高校俱乐部是由中国专业的IT社区 CSDN&#xff08;Chinese Software Develop Net&#xff09;发起的&#xff0c;由全国各高校在校生代表自发加入的 IT 技术学习型组织。CSDN 由此搭建起行业与校园之间的桥梁&#xff0c;公益为各俱乐部提供行业资讯、技术学习、专家交流、…

4.Dynamics CRM 数据数量限制更改

1.在CRM2016中如果想要导出超过10000记录数据&#xff0c;更新 MaxRecordsForExportToExcel 这个字段的值。 SELECT MaxRecordsForExportToExcel FROM [FCCRM_MSCRM].[dbo].[OrganizationBase] 2.列表页面&#xff0c;最大显示的数量 5000&#xff0c;修改 DeploymentProper…

2019年总结【跨越今天,更不平凡】

还记得小时候写作文&#xff0c;畅想2020会怎样怎样&#xff0c;光阴似箭&#xff0c;2020真的来了&#xff0c;度过了艰难的考试周&#xff0c;抽了个晚上&#xff0c;回想了一下&#xff0c;决定写一写总结吧&#xff0c;似乎以前都没写过呢&#xff0c;那干脆连带2017、2018…

【转】LCS和LCS服务器应用程序概述

Live Communication Server 2005&#xff08;以下简称LCS&#xff09;是微软最新推出的企业即时消息服务器&#xff0c;使用业界标准的SIP协议。本文介绍LCS及LCS服务器应用程序。目录 1. 1. LCS2005概览 1.1 Live Communications Server 2005是什么&#xff1b; 1.2 …

Hexo博客:您备案的网站未指向阿里云国内节点(不含香港)服务器,备案号可能被取消接入

问题描述&#xff1a;经检查您的网站域名 xxxxxx 未指向阿里云国内节点&#xff08;不含香港&#xff09;服务器且无访问记录 &#xff0c;依据工信部相关法规规定属于空壳网站&#xff0c;请您尽快将域名解析IP地址指向阿里云国内节点&#xff08;不含香港&#xff09;服务器。…

【转】win10录屏快捷键报错显示需要新应用打开ms-gamingoverlay

Win10 截图快捷键 winshift s Win10 录屏快捷键 winG &#xff0c;提示&#xff1a;需要新应用打开此ms-gamingoverlay 这也是因为被你卸载了Xbox相关的应用或者文件&#xff0c;所以无法启用了。解决办法如下&#xff1a; 1.管理员方式运行powershell 快捷键&#xff1a;ct…