zoukankan      html  css  js  c++  java
  • python学习--练习题21-27

    练习21

    #求1+2!+3!+...+20!的和。

    from functools import reduce
    sum=[]
    for i in range(1,21):
        a=1
        l = []
        while a<=i:
            l.append(a)
            a+=1
        每个阶层 = reduce(lambda x, y: x*y, l)
        sum.append(每个阶层)
    求和 = print(reduce(lambda x, y: x+y, sum))
    '''
    n = 0   # 参考答案的代码少很多,主要是我对题目的理解不够,增加了计算的复杂度
    s = 0
    t = 1
    for n in range(1,21):
        t *= n
        s += t
    print(s)
    
    '''

    练习22

    #题目:写出阶层的类。

    class 阶层(): ## 原来的练习题不是这个,我自己想写一个这样的类,目前为止没有对类的练习
        pass
        def __init__(self,num):
            self.num=num
            s=1
            for i in range(1,self.num):
                s+=s*i
                i+=1
            print(s)
    阶层(6)

    练习23

    #题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

    a=str(input("no.1"))  ##我原来以为是把输入的五个字符,反过来输出,题目的意思是直接输入一行,然后反过来输出
    b=str(input("no.2"))
    c=str(input("no.3"))
    d=str(input("no.4"))
    e=str(input("no.5"))
    l=[a,b,c,d,e]
    for i in range(0,5):
        for n in range(0,5):
            if l[i]>l[n]:
                l[i],l[n]=l[n],l[i]
            else:
                l[i], l[n] = l[i], l[n]
    print(l)
    
    '''   
    def output(s, l):   #非常简洁的写法
        if l == 0:
            return
        print(s[l - 1],end=" ")
        output(s, l - 1)
    
    
    s = str(list('Input a string:'))
    l = len(s)
    output(s, l)
    
    '''

    练习24

    #题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

    输入数字=str(input("your numbers: "))
    n=len(输入数字)
    s=(输入数字[i] for i in range(n-1,-1,-1)) #逆序按单个输出
    l=list(s) #放入列表
    print("逆序排:",l) #打印逆序
    print("是{0}位数".format(n))
    w=['个位:','十位','百位','千位','万位','十万位']
    for i in zip(w,list(l)):  #zip好用到不行
        print(i,end=" ")

    练习25

    #题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

    输入数字2=str(input("your numbers: "))
    n=len(输入数字2)
    flag=True
    for i in range(0,int(n/2)+1):
        if 输入数字2[0+i]!=输入数字2[n-i-1]:  ##在多轮计算中,引入一个外围变量flag可以很好的解决问题(只要有一个不是就不是的问题)
            flag=False
    if flag==True:
        print("是回文")
    else:
        print("不是回文")

    练习26

    #题目:按逗号分隔列表。

    L = [1,2,3,4,5]
    s1 = ','.join(str(n) for n in L) ##join的使用很方便
    print (s1)

    练习27

    #题目:有5个人坐在一起,问第五个人多少岁?
    # 他说比第4个人大2岁。
    # 问第4个人岁数,他说比第3个人大2岁。
    # 问第3个人,又说比第2人大两岁。
    # 问第2个人,说比第1个人大两岁。
    # 最后问第一个人,他说是10岁。请问第五个人多大?


    s=10
    for i in range(0,4):  
        s=s+2
    print(s)
    
  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/xurui89/p/10534886.html
Copyright © 2011-2022 走看看