简化这段Python代码
我写了一个程序来检查我在纸上想的解决方案是否正确(结果是对的)。
任务是:计算从10到200的所有数字相乘后,结果末尾有多少个零。
答案是48个,这个手动计算起来很简单。
我从来没有认真写过Python,这就是我写的代码:
mul = 1
for i in range(10, 200 + 1):
mul *= i
string = str(mul)
string = string[::-1]
count = 0;
for c in str(string):
if c == '0':
count += 1
else:
break
print count
print mul
我敢打赌,用Python这样的语言可以写得更优雅一些。
补充一下:是的,这个是作业,但不是我的——我只是帮了一个朋友;-)
7 个回答
4
在编程中,有时候我们需要处理一些数据,这些数据可能是从用户那里输入的,或者是从其他地方获取的。为了让程序能够理解这些数据,我们通常需要对它们进行一些处理。
比如说,如果我们有一个数字的列表,我们可能想要计算这些数字的总和,或者找出其中最大的数字。这些操作在编程中是非常常见的。
另外,程序在运行的时候可能会遇到一些错误,比如输入的数据格式不对,或者计算过程中出现了问题。为了让程序能够顺利运行,我们需要在代码中加入一些检查,确保数据是正确的。
总之,处理数据和错误是编程中非常重要的部分,掌握这些技能可以帮助我们写出更好的程序。
print sum(1 + (not i%25) + (not i%125) for i in xrange(10,201,5))
6
import math
answer = str(math.factorial(200) / math.factorial(9))
count = len(answer) - len(answer.rstrip('0'))
下面是一些步骤:
- 导入数学库
- 计算200的阶乘,然后去掉前面9个数字
- 把右边的零去掉,看看长度有什么变化
11
这是一个简单的实现方法,不需要计算阶乘(这样可以处理大数字,比如2000000的阶乘!)(已编辑):
fives = 0
twos = 0
for i in range(10, 201):
while i % 5 == 0:
fives = fives + 1
i /= 5
while i % 2 == 0:
twos = twos + 1
i /= 2
print(min(fives, twos))