PythonTip(11~15)题详解
2016-12-09 14:27
288 查看
题目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 = 0 while (m % 10 == 0): count += 1 m /= 10 print(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 num print(count(L))
题目12:结尾非零数的奇偶性
描述:给你一个正整数列表 L, 如 L=[2,8,3,50], 判断列表内所有数字乘积的最后一个非零数字的奇偶性,奇数输出1,偶数输出0. 如样例输出应为0
分析:依照 11 题的做法,需要找到乘积的最后一个非零数,就好做了。
答案:
m = reduce(lambda x, y: x * y, L) count = 0 while (m % 10 == 0): #判断乘积结尾是否为零 m = m/10 if m%2 != 0: #判断非零数的奇偶性 count = 1 print count
举一反三
1.这个方法就是把每个步骤分开来写,先计算乘积,再把乘积末尾的 0 去掉,再判断奇偶性。也挺好的,起码逻辑是有的。# -*- coding: UTF-8 -*- L = [2,8,3,50] k = 1 for i in range(len(L)): k = L[i] * k k1 = list(str(k)) while True: if k1[-1] == '0': k1.pop() continue else: break jiouxing = None y = int(k1[-1]) if y % 2 == 0: jiouxing = 0 else : jiouxing = 1 print jiouxing
题目13:光棍的悲伤
描述:光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节。鄙人光棍几十载,光棍自有光棍的快乐。让我们勇敢面对光棍的身份吧,
现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出。
分析:此题需要用到将一个数转化成二进制的方法,这就是 bin(a).
答案:
x = str(bin(a)) count = 0 for i in x: if i == '1': count = count + 1 print count
举一反三
1.用count()函数# -*- coding: UTF-8 -*- a = 10 print str(bin(a)).count('1')
2.列表形式
# -*- coding: UTF-8 -*- a = 10 x = bin(a) L = [y for y in x if y == '1'] print len(L)
3.直接用二进制的算法,在统计为 1 的个数。(此方法比较好,适用于基础较弱的同学)
# -*- coding: UTF-8 -*- a = 11 def count(a): sum = 0 while(a >= 1): a, b = divmod(a, 2) if b != 0: sum = sum + 1 return sum print count(a)
题目14:Python之美
描述:输出Python之禅,注意:输出python之禅的源码即可,不用转换为英文。(小小的提示:print this.s)分析:不知道这个题的目的是想让我们输出什么?试了一下,输出提示好像还通不过,此题也是醉了~~~
答案:
from this import * print s
题目15:大小写转换
描述:给定一个字符串a, 将a中的大写字母 转换成小写,其它字符不变,并输出。分析:很简单,用 lower() 函数就可以了。
答案:
print a.lower()
相关文章推荐
- Learn Python The Hard Way-Ecercise11~15
- 笨方法学Python(11-15)
- Mysql绿色版 安装全过程及配置时遇到的问题详解(1)(11-15-17)
- python爬虫日志(15)cookie详解
- Day_11 - Day_15 之一周Python学习总结与复习
- 11-09-15 python 列表推导List Comprehension&
- 11.python并发入门(part15 关于I/O多路复用)
- learning python in the hard way习题11~15的附加题练习
- Python-习题11~15
- PythonTip(26~30)题详解
- PythonTip(21~25)题详解
- Python学习笔记(15)-Python代码转换为exe可执行程序详解
- Python Tip(41~45)题详解
- CMake手册详解 (11-15)
- PythonTip(16~20)题详解
- PythonTip(36~40)题详解
- 机器学习系列(11)_Python中Gradient Boosting Machine(GBM)调参方法详解
- Python Tip(51~55)题详解
- python标准库介绍——15 fileinput 模块详解
- PythonTip(6~10)题详解