Python练习题 045:Project Euler 017:数字英文表达的字符数累加
本题来自 Project Euler 第17题:https://projecteuler.net/problem=17
'''
Project Euler 17: Number letter counts
If the numbers 1 to 5 are written out in words:
one, two, three, four, five,
then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
If all the numbers from 1 to 1000 (one thousand) inclusive
were written out in words, how many letters would be used?
NOTE: Do not count spaces or hyphens.
For example, 342 (three hundred and forty-two) contains 23 letters
and 115 (one hundred and fifteen) contains 20 letters.
The use of "and" when writing out numbers is in compliance with British usage. Answer: 21124
''' n1 = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
n2 = ['', 'eleven', 'twelve', 'thirteen','fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
n3 = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'] sum = '' #所有数字的英文表达累加 for i in range(1, 1001):
baiwei = i//100 #百位数
shiwei = (i - baiwei*100)//10 #十位数
gewei = i%10 #个位数
eng = '' #当前数字的英文写法 if i == 1000:
eng += 'onethousand'
elif i%100 == 0: #若为整百的
eng = n1[baiwei] + 'hundred'
elif i > 100:
eng = eng + n1[baiwei] + 'hundredand'
if shiwei == 1 and gewei != 0:
eng += n2[gewei]
else:
eng = eng + n3[shiwei] + n1[gewei]
elif i > 19:
eng = eng + n3[shiwei] + n1[gewei]
elif i > 10:
eng += n2[gewei]
elif i == 10:
eng += 'ten'
else:
eng += n1[gewei]
sum += eng #累加各个数字的英文表达 print(len(sum))
老实说,看到这题的时候,我心里其实是不愿意做的:对于我这样的算法渣,肯定得写出N个 if 和 elif。但没办法,只好硬着头皮写,错了好几回之后,总算是把所有情况都考虑到了。擦汗……
大致思路是:把数字挨个儿转换成英文表达方式,累加起来,然后用 len() 计算总字符的长度即可。
Python练习题 045:Project Euler 017:数字英文表达的字符数累加的更多相关文章
- Python练习题 005:三个数字由大到小排序输出
[Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...
- Python练习题 001:4个数字求不重复的3位数
听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...
- Project Euler 98:Anagramic squares 重排平方数
Anagramic squares By replacing each of the letters in the word CARE with 1, 2, 9, and 6 respectively ...
- Project Euler 92:Square digit chains 平方数字链
题目 Square digit chains A number chain is created by continuously adding the square of the digits in ...
- Python: 去掉字符串中的非数字(或非字母)字符
>>> crazystring = ‘dade142.;!0142f[.,]ad’ 只保留数字>>> filter(str.isdigit, crazystring ...
- jquery判断字符长度 数字英文算1字符 汉字算2字符
<input type="text" maxlength="25" oninput="textlength(this)"> &l ...
- Python3练习题 001:4个数字求不重复的3位数
#Python练习题 001:4个数字求不重复的3位数#方法一import itertoolsres = [][res.append(i[0]*100 + i[1]*10 + i[2]) for i ...
- Python练习题 039:Project Euler 011:网格中4个数字的最大乘积
本题来自 Project Euler 第11题:https://projecteuler.net/problem=11 # Project Euler: Problem 10: Largest pro ...
- Python练习题 047:Project Euler 020:阶乘结果各数字之和
本题来自 Project Euler 第20题:https://projecteuler.net/problem=20 ''' Project Euler: Problem 20: Factorial ...
随机推荐
- 放眼SEM现状及发展历程
http://www.wocaoseo.com/thread-187-1-1.html 由于近年来移动应用的基本普及,搜索引擎营销随之进入高速发展时代,应用层次的提升已经成为企业营销策略的一个重要组成 ...
- [PyTorch 学习笔记] 3.2 卷积层
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_convolution.py 这篇文 ...
- RabbitMQ入门指南
消息队列(Message Queue,以下简称MQ)常用于异步系统的数据传递.若不用MQ,我们只能[在应用层]使用轮询或接口回调等方式处理,这在效率或耦合度上是难以让人满意的.当然我们也可以在系统间保 ...
- Linux文件描述符与重定向
文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 当Linux启动的时候会默认打开三个文件描述符,分别是: 标 ...
- 用IDEA一年了,终于敢说自己会用了
作为Java老兵,我也是用了很多年的eclipse,为了与时俱进,于是切换到了IDEA.刚开始的时候感觉很不适应,感觉这玩意儿不如eclipse好用,影响工作效率,于是又换回eclipse. 但是很多 ...
- 条件竞争(race condition)
条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生. 参考了一些资料,发现一个比较能说明问 ...
- 解决ORA-00257无法删除用户
今日早晨在客户反馈不能登陆系统了,查看oracle日志.发现如下错误ORA-00257: archiver error. Connect internal only, until freed.该错误是 ...
- 【Gin-API系列】部署和监控(九)
本文是[Gin-API系列]的最后一篇文章,简单介绍如何在生产环境的部署架构和监控手段. 生产部署 部署架构 使用Nginx加Keepalived的方式搭建,可以达到高可用的效果,并可以横向扩容 如何 ...
- 转贴:修改springboot控制台输出的图案
Post from:https://blog.csdn.net/WXN069/article/details/90667668 修改springboot控制台输出的图案1.在src\main\reso ...
- 借助Java的JDBC自制“DBMS”管理操作数据库
package jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; imp ...