zoukankan      html  css  js  c++  java
  • python初步学习-练习题

    1.实现1-100的所有的和

    #!/usr/bin/env python
    #encoding:utf8
    '''实现1-100的所有的和
    1. 使用列表解析获取0-100的列表
    2. 使用reduce内置函数和匿名函数计算列表的总和'''
    number_list = [x for x in xrange(101)]      #使用xrange和range都可以,不过xrange的性能要优于range
    sum_list = reduce(lambda x, y:x+y,number_list )
    print sum_list      #结果为5050
    

    2.实现1-500所有奇数的和

    #!/usr/bin/env python
    #encoding:utf8
    '''实现1-500所有奇数的和
    1. 同样使用列表解释获取1-500内的奇数
    2. 使用reduce函数和匿名函数计算列表的总和'''
    
    odd_list = [x for x in xrange(501) if x % 2 == 1] 
    odd_sum_list = reduce(lambda x,y:x+y,odd_list)
    print odd_sum_list      #结果为62500
    
    

    3.求1+ 2! + 3! + 4! + ……20!的和

    #!/usr/bin/env python
    #encoding:utf8
    
    '''
     计算1+ 2! + 3! + 4! + ……20!的和
    '''
    
    def fac(n):
        i = 1
        fac_number = 1
        while i <= n:
            fac_number = fac_number*i
            i += 1
        return fac_number
    
    def fac_sum(n):
        sum = 0
        while n:
            sum += fac(n)
            n -= 1
        return sum
    
    number = raw_input('plesae input the number:')
    
    print "%s!+...+2!+1 的和为 %d" % (number,fac_sum(int(number)))
        
    

    4.对指定一个list进行排序[2,32,43,453,54,6,576,5,7,6,8,78,7,89]

    • 存在两种排序方式

      • sorted()
      • list.sort()

    区别: sortedlist.sort 都接受key, reverse定制。但是区别是。list.sort()是列表中的方法,只能用于列表。而sorted可以用于任何可迭代的对象。list.sort()是在原序列上进行修改,不会产生新的序列。所以如果你不需要旧的序列,可以选择list.sort()sorted() 会返回一个新的序列。旧的对象依然存在。
    只要是可迭代对象都可以用sorted
    sorted(itrearble, cmp=None, key=None, reverse=False)
    =号后面是默认值 默认是升序排序的, 如果想让结果降序排列,用reverse=True
    最后会将排序的结果放到一个新的列表中, 而不是对iterable本身进行修改。
    sorted()函数的处理范围比list.sort()处理的范围更加广泛

    '''方法一'''
    list_to_sort = [2,32,43,453,54,6,576,5,7,6,8,78,7,89]
    list_to_sort.sort() #sort不加参数默认为升序排序
    print list_to_sort  #结果为[2, 5, 6, 6, 7, 7, 8, 32, 43, 54, 78, 89, 453, 576]
    
    
    '''方法二'''
    list_to_sort = [2,32,43,453,54,6,576,5,7,6,8,78,7,89]
    new_sort_list = sorted(list_to_sort)    
    print new_sort_list     #结果为[2, 5, 6, 6, 7, 7, 8, 32, 43, 54, 78, 89, 453, 576]
    

    5.把一个数字的list从小到大排序,然后写入文件,然后从文件中读取出来文件内容,然后反序,在追加到文件的下一行中

    实现代码如下:虽然没有必要这样做,但是体现了“分解”的思想,代码重复使用性增强

    #coding:utf8
    
    import sys
    '''
    把一个数字的list从小到大排序,然后写入文件
    然后从文件中读取出来文件内容,然后反序,在追加到文件的下一行中
    '''
    
    def sort_list(list_origi):
        '''从小到大排序'''
        sorted_list = sorted(list_origi)
        return sorted_list
    
    def write_file(file_name,context):
        '''写文件操作'''
        with open(file_name,'w') as fd:
            fd.write('{0}'.format(context))
    
    def reverse(list_origi):
        '''将列表倒序排列'''
        reverser_list = sorted(list_origi,reverse=True)
        return reverser_list
    
    def append_file(file_name,context):
        '''追加内容到文件'''
        with open(file_name,'a') as fd:
            fd.write('
    {0}
    '.format(context))
    
    if __name__ == '__main__':
        list_origi = input('plese input a list:')
        sorted_list = sort_list(list_origi)
        write_file('list_test.txt',sorted_list)
        reverser_list = reverse(sorted_list)
        append_file('list_test.txt',reverser_list)
    
    

    上面的代码中的input是关键,如果使用raw_inputsys.argv[1]都为字符串类型。例输入一个列表[1,2,3],后面两个函数将会把这个列表变为['[','1','2','3',',',',',']'],这种结果肯定不是我们想要的。使用input 可以解决这个问题

    6.用函数实现9*9乘法口诀

    #!/usr/bin/env python
    #coding:utf-8
    
    '''
    9x9乘法运算
    '''
    
    def multiplication(i):
        '''
        1x1=1
        2x1=2,2x2=4
        ...
        ......
        '''
        a = 0
        list1 = []
        for y in [z for z in range(i) if z > 0]:
            for x in [d for d in range(i) if d > 0]:
                    if x <= y:
                        b = "{0} x {1} = {2}".format(x,y,x*y)
                        list1.append(b)
            print str(list1) + '
    ',      
            list1 = []
    multiplication(10)
    

    打印结果:

    ['1 x 1 = 1']
    ['1 x 2 = 2', '2 x 2 = 4']
    ['1 x 3 = 3', '2 x 3 = 6', '3 x 3 = 9']
    ['1 x 4 = 4', '2 x 4 = 8', '3 x 4 = 12', '4 x 4 = 16']
    ['1 x 5 = 5', '2 x 5 = 10', '3 x 5 = 15', '4 x 5 = 20', '5 x 5 = 25']
    ['1 x 6 = 6', '2 x 6 = 12', '3 x 6 = 18', '4 x 6 = 24', '5 x 6 = 30', '6 x 6 = 36']
    ['1 x 7 = 7', '2 x 7 = 14', '3 x 7 = 21', '4 x 7 = 28', '5 x 7 = 35', '6 x 7 = 42', '7 x 7 = 49']
    ['1 x 8 = 8', '2 x 8 = 16', '3 x 8 = 24', '4 x 8 = 32', '5 x 8 = 40', '6 x 8 = 48', '7 x 8 = 56', '8 x 8 = 64']
    ['1 x 9 = 9', '2 x 9 = 18', '3 x 9 = 27', '4 x 9 = 36', '5 x 9 = 45', '6 x 9 = 54', '7 x 9 = 63', '8 x 9 = 72', '9 x 9 = 81']
    

    乘法小习题

    #!/usr/bin/env python
    # coding:utf-8
    # Time:2017/12/27/0027 18:19
    # write_by: ping
    # script_name:multiplication.py
    
    '''
    ABCD * 9 = DCBA
    分别算出 A、B、C、D
    A (0,9]
    B [0,9]
    C [0,9]
    D (0,9]
    '''
    def multi():
        i = 0
        for alpha in range(1, 10):
            for beta in range(0, 10):
                for gamma in range(0, 10):
                    for delta in range(1, 10):
                        left = int(alpha)*1000 + int(beta)*100 + int(gamma)*10 + int(delta)
                        right = int(delta)*1000 + int(gamma)*100 + int(beta)*10 + int(alpha)
                        i += 1
                        if left * 9 == right:
                            return "A = {}, B = {}, C = {}, D = {}.循环次数{}".format(alpha,beta,gamma,delta,i)
    
    def main():
        print multi()
    
    
    if __name__ == '__main__':
        main()
    
  • 相关阅读:
    记录阿里云服务器mysql被黑
    微服务SpringCloud容器化案例
    优雅的启动、停止、重启你的SpringBoot项目
    java模式:建造者模式
    java集合 线程安全
    挖坑:hive集成kerberos
    挖坑:handoop2.6 开启kerberos(全流程学习记录)
    Specified version of key is not available (44)
    Mysql数据按天分区,定期删除
    maven项目打包额外lib目录
  • 原文地址:https://www.cnblogs.com/pingqiang/p/7739799.html
Copyright © 2011-2022 走看看