您的位置:首页 > 编程语言 > Python开发

Python第五天课后作业

2017-09-04 09:06 281 查看
第一题

输入一个正整数n,求n!(即阶乘)末尾0的个数

**方法一**
n=input("please input n:")
count=0
#计算阶乘
def factorial(x1,x2):
return x1*x2
#计算阶乘末尾0的个数
def factorial_zero(x):
global count      #引用全局变量
if x%10==0:
count=count+1
factorial_zero(x/10)
return count
result=reduce(factorial,range(1,n+1))
print result       #打印阶乘
print factorial_zero(result)


**方法二**
count=0
zero=0    #变量zero记录0的个数
def caculate(num):
global count,zero
for i in range(1,num):
count=num/(5**i)
zero+=count
if count==0:
return zero
n=input("please input n:")
print caculate(n)


第二题

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。

如:n=3时,3个整数13,312,343,连成的最大整数为34331213。

如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。

#以空格分隔,将输入的数字存入列表中
l=[int(i) for i in raw_input().split()]
def compare(x,y):
if str(x)+str(y)>str(y)+str(x):
return -1
elif str(x)+str(y)<str(y)+str(x):
return 1
else:
return 0
print sorted(l,compare)


第三题

回文串的设计与判断

#判断回文字符串
def Palindrome(string):
if string==string[::-1]:
return True
else:
return False

strA=raw_input()
strB=raw_input()
#字符串A长度为length,共有length+1种插法
for i in range(0,len(strA)+1):
newstr=strA[:i]+strB+strA[i:]
if Palindrome(newstr):
count+=1
print count
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: