不使用任何数字打印出2014迎新年
描述
2013年过去了,迎来了2014年————马年。 邮件列表也挺热闹的,看到一个主题“如何不用任何int打印2014”,意思就是不要用数字来打印出2014,顺便迎新年。^-^
方法一
使用到来sum,map,ord等内置函数
1 >>>print (sum(map(ord, 'Happy new year to you!')))
2 2014
- ord()
给定一个长度为1的字符,返回一个整数值所代表的Unicode代码的字符(例如:’a’, ord(‘a’)=97,’A’, ord(‘A’)=65)。当参数是一个8-bit的字符时,(例如:ord(u’\u2020’)得到8224)
- map()
map(func, seq1[, seq2…])详见map 将函数 func 作用于给定序列(s)的每个元素,并用一个列表来提供返回值;如果 func 为 None, func 表现为一个身份函数,返回一个含有每个序列中元素集合的 n 个元组的列表.So:
1 >>>map(ord, 'Happy new year to you!')
2 [72, 97, 112, 112, 121, 32, 110, 101, 119, 32, 121, 101, 97, 114, 32, 116, 111, 32, 121, 111, 117, 33]
- sum()
最后的求和
1 >>>ls = [72, 97, 112, 112, 121, 32, 110, 101, 119, 32, 121, 101, 97, 114, 32, 116, 111, 32, 121, 111, 117, 33]
2 >>>sum(ls)
3 2014
刚好是2014。
方法二
1 >>>(__<<__)-(__<<_)-_
2 2013
_和__在python中的值是2,和8;所以__<<__
便是2048。
最后这个式子就是2048-32-2=2014。
耶!