PythonTip(11~15)题详解
来源:互联网 发布:c 敏感词过滤算法 编辑:程序博客网 时间:2024/06/04 20:14
题目11:结尾0的个数
描述:给你一个正整数列表 L, 如 L=[2,8,3,50], 输出L内所有数字的乘积末尾0的个数,
如样例L的结果为2.(提示:不要直接相乘,数字很多,可能溢出)
分析:这个题意思就是把列表中所有元素相乘,计算结果末尾 0 的个数。比如 L 中 2*8*3*50 = 2400,那末尾的 0 就是 2,所以输出结果为 2.
答案:用匿名函数 lambda 。lambda函数的用法
m = reduce(lambda x, y: x * y, L)count = 0while (m % 10 == 0): count += 1 m /= 10print(count)
举一反三
1.个人觉得这个方法不太好,既繁琐又不易理解,还是上面的答案比较简洁易懂。
# -*- coding: UTF-8 -*-L = [2,8,3,50]def count(L): count2 = count5 = 0 # 分别保存list中各个元素中包含2和5的因子数目 flag2 = flag5 = True l = len(L) for i in range(0, l): while flag2 or flag5: while L[i] % 2 == 0: # 计算保存list中各个元素中包含2的因子数目 count2 = count2 + 1 L[i] = L[i] / 2 flag2 = False while L[i] % 5 == 0: # 计算list中各个元素中包含5的因子数目 count5 = count5 + 1 L[i] = L[i] / 5 flag5 = False flag2 = flag5 = True num = (count2 if count2 < count5 else count5) return numprint(count(L))
题目12:结尾非零数的奇偶性
描述:给你一个正整数列表 L, 如 L=[2,8,3,50], 判断列表内所有数字乘积的最后一个非零数字的奇偶性,
奇数输出1,偶数输出0. 如样例输出应为0
分析:依照 11 题的做法,需要找到乘积的最后一个非零数,就好做了。
答案:
m = reduce(lambda x, y: x * y, L)count = 0while (m % 10 == 0): #判断乘积结尾是否为零 m = m/10if m%2 != 0: #判断非零数的奇偶性 count = 1print count
举一反三
1.这个方法就是把每个步骤分开来写,先计算乘积,再把乘积末尾的 0 去掉,再判断奇偶性。也挺好的,起码逻辑是有的。
# -*- coding: UTF-8 -*-L = [2,8,3,50]k = 1for i in range(len(L)): k = L[i] * kk1 = list(str(k))while True: if k1[-1] == '0': k1.pop() continue else: breakjiouxing = Noney = int(k1[-1])if y % 2 == 0: jiouxing = 0else : jiouxing = 1print jiouxing
题目13:光棍的悲伤
描述:光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节。
鄙人光棍几十载,光棍自有光棍的快乐。让我们勇敢面对光棍的身份吧,
现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出。
分析:此题需要用到将一个数转化成二进制的方法,这就是 bin(a).
答案:
x = str(bin(a))count = 0for i in x: if i == '1': count = count + 1print count
举一反三
1.用count()函数
# -*- coding: UTF-8 -*-a = 10print str(bin(a)).count('1')
2.列表形式
# -*- coding: UTF-8 -*-a = 10x = bin(a)L = [y for y in x if y == '1']print len(L)
3.直接用二进制的算法,在统计为 1 的个数。(此方法比较好,适用于基础较弱的同学)
# -*- coding: UTF-8 -*-a = 11def count(a): sum = 0 while(a >= 1): a, b = divmod(a, 2) if b != 0: sum = sum + 1 return sumprint count(a)
题目14:Python之美
描述:输出Python之禅,注意:输出python之禅的源码即可,不用转换为英文。(小小的提示:print this.s)
分析:不知道这个题的目的是想让我们输出什么?试了一下,输出提示好像还通不过,此题也是醉了~~~
答案:
from this import *print s
题目15:大小写转换
描述:给定一个字符串a, 将a中的大写字母 转换成小写,其它字符不变,并输出。
分析:很简单,用 lower() 函数就可以了。
答案:
print a.lower()
- PythonTip(11~15)题详解
- PythonTip(1~5)题详解
- PythonTip(6~10)题详解
- PythonTip(16~20)题详解
- PythonTip(21~25)题详解
- PythonTip(26~30)题详解
- PythonTip(36~40)题详解
- pythonTip
- PythonTip--7.31
- PythonTip--8.1
- PythonTip--8.2
- PythonTip--8.3
- PythonTip--8.4
- PythonTip--8.5
- PythonTip--8.7
- PythonTip--8.8
- PythonTip 分解n!
- Pythontip 输出字典key
- tsv导入sqlserver数据库,各种心酸,终于成功!
- 只有程序员才有的十大烦恼
- zeromq 中的zmq_ctx_new
- OpenCV自适应二值化
- Segment Tree Query II
- PythonTip(11~15)题详解
- Android基础--Service
- zmq_ctx_set
- TCP协议的一些小细节
- 【codefoce 630.P】Area of a Star
- Oracle数据查询
- JS设计模式学习
- zeromq中zmq_ctx_shutdown
- 简单的代码文档 javadoc 标签