第三章 函数练习题

  1. 编码问题 

    1. 请说明python2 与python3中的默认编码是什么?
      python2 默认编码是ascii码  python3 默认编码是utf-8
       
    2. 为什么会出现中文乱码?你能列举出现乱码的情况有哪几种? 
    3. 如何进行编码转换?
      gbk>>> decode解码 >>>unicode
      unicode>>>encode编码>>>gbk
       
    4. #-*-coding:utf-8-*- 的作用是什么?

      文件头  申明编码
    5. 解释py2 bytes vs py3 bytes的区别

      1. 文件处理 

        1. r和rb的区别是什么?
          r是读取文件
          rb是二进制的形式读取文件
           
        2. 解释一下以下三个参数的分别作用
          f_name  文件名
          r 读取方式
          encoding  编码方式

      函数基础:

      1. 写函数,计算传入数字参数的和。(动态传参)
        # 写函数,计算传入数字参数的和。(动态传参)
        def func(x,7):
            return x+7
      2. 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
        # 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
        def func():
            name = input('要修改的文件名:')
            content = input('要修改的内容:')
            content1 = input('修改成:')
            new_name = name+'.new'
        
            import os
            f = open(name,'r')
            f_new = open(new_name,'w')
        
            for item in f:
                if content in item:
                    new_item = item.replace(content,content1)
                else:
                    new_item = item
                f_new.write(new_item)
            f.close()
            f_new.close()
            os.rename(new_name,name)
        func()
        View Code
      3. 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
        # 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
        def func(*args):
            n = 0
            for i in args:
                if i == ' ':
                    n += 1
            print('有%s个空'%n)
        
        func(*[1,2,' ',3,4])
        View Code
      4. 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

        # 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
        
        dic = {'k1':"v1v1",'k2':[11,22,33,44]}
        def func(dic):
            for item in dic:
                if len(dic[item]) >2:
                    dic[item] = dic[item][:2]
            return dic
        
        f = func(dic)
        print(f)
        View Code
      5. 解释闭包的概念

        def func():
            n = 10
        
            def func1():
                print('在fun1中打印n',n)
            return func1
        
        f = func()
        f()

      函数进阶:

      1. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
        1. 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃A’)]
          # 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
          # 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃A’)]
          def  func():
              tu2 = ['J', 'Q', 'K', 'A']
              lis = []
          
              for i in range(2, 11):
                  lis.append(i)
          
              lis = lis + tu2
              data = ['红桃','黑桃','方块','梅花']
              lis1 = []
          
              for i in lis:
                  for item in data:
                      lis1.append((item,i))
          
              return  lis1
          
          print(func())
          View Code
      2. 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}

         1 # 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
         2 def min_max(*args):
         3     ole_max = args[0]
         4     old_min = args[0]
         5     for i in args:
         6         if i > ole_max:
         7             ole_max = i
         8         elif i < old_min:
         9             old_min = i
        10     return {'max':ole_max,'min':old_min}
        11 
        12 
        13 
        14 print(min_max(3,4,5,6,18,7,1,-9,2,9))
        View Code
      3. 写函数,专门计算图形的面积

        • 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
        • 调用函数area(‘圆形’,圆半径) 返回圆的面积
        • 调用函数area(‘正方形’,边长) 返回正方形的面积
        • 调用函数area(‘长方形’,长,宽) 返回长方形的面积
           1 # 写函数,专门计算图形的面积
           2 #
           3 # 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
           4 # 调用函数area(‘圆形’,圆半径) 返回圆的面积
           5 # 调用函数area(‘正方形’,边长) 返回正方形的面积
           6 # 调用函数area(‘长方形’,长,宽) 返回长方形的面积
           7 def area():
           8     def circle(r):
           9         print(3.14*r**2)
          10     def square(s):
          11         print(s*s)
          12     def rectangle(x,y):
          13         print(x*y)
          14 
          15 
          16     name = input('name:')
          17     if name == '圆形':
          18         r = int(input('r:'))
          19         circle(r)
          20     if name == '正方形':
          21         s = int(input('s:'))
          22         square(s)
          23     if name == '长方形':
          24         x = int(input('x:'))
          25         y = int(input('y:'))
          26         rectangle(x,y)
          27 area()
          View Code
      4. 写函数,传入一个参数n,返回n的阶乘

        # 写函数,传入一个参数n,返回n的阶乘
        def  cal(n):
            res = 1
            for i in range(n,0,-1):
                res = res*i
            return res
        print(cal(6))
      5. 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

         1 # 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
         2 #
         3 verify  = False
         4 
         5 
         6 def loging(choice):
         7     def iner():
         8         global verify
         9         if verify == False:
        10             name = input('name:')
        11             password = input('password')
        12 
        13             f = open('data','r')
        14             da = eval(f.read())
        15             if name in da:
        16                 if password == da[name]:
        17                     verify = True
        18 
        19         if verify == True:
        20             choice()
        21     return iner
        22 @loging
        23 def func():
        24     print('---func---')
        25 @loging
        26 def func1():
        27     print('----func1----')
        28 @loging
        29 def func2():
        30     print('-----func2----')
        31 
        32 
        33 
        34 
        35 func()
        36 func2()
        View Code

      生成器和迭代器

      1. 生成器和迭代器的区别?
      2. 生成器有几种方式获取value?
      3. 通过生成器写一个日志调用方法, 支持以下功能

        • 根据指令向屏幕输出日志
        • 根据指令向文件输出日志
        • 根据指令同时向文件&屏幕输出日志
        • 以上日志格式如下

        • 代码结构如下

      内置函数

      1. 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb

      2. 用filter函数处理数字列表,将列表中所有的偶数筛选出来

      3. 如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格

        计算购买每支股票的总价

        用filter过滤出,单价大于100的股票有哪些

原文地址:https://www.cnblogs.com/aaaajayheng1990/p/8873660.html