Python第五天课后作业

第一题
输入一个正整数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

猜你喜欢

转载自blog.csdn.net/siyuexiangxian/article/details/77833049