Python关于函数使用相关的练习题

1.写函数,计算传入数字参数的和。(动态传参)

def func_sum(x, y):
      return x + y
   或
   lambda x,y:x+y

2.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作

import os
  def modify_file(file_name,content,newstr):
      new_file_name = '%sfile_name' %'new.'
      f_new = open(new_file_name, 'w')
      if os.path.exists(file_name):
          with open(file_name,'r+') as f:
              for line in f:
                  if content in line:
                      line = line.replace(content, newstr)
                  f_new.write(line)
          f_new.close()
          os.rename(new_file_name, file_name)
      else:
          exit('file is not exist !!!')

3.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

def isNull(p_obj):
      for item in p_obj:
          if item.strip() == '':
              return True
      else:
          return False
  ​
  a = [' ','1','2']
  b = ['5','1','2']
  c = 'ab c'
  print(isNull(a))
  print(isNull(c))
  print(isNull(b))

4.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

def two_len(**kwargs):for k, v in kwargs.items():if len(v) > 2:
  ​
              kwargs[k] = v[:2]return kwargs
  ​
  print(two_len(x='12', y='345', c='byw'))

5.闭包

内部函数包含对外部作用域而非全局作用域变量的引用,该内部函数称为闭包函数

6.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃A’)]

def cards():
      type_li = ['红心', '草花', '黑桃','梅花']
      num = list(range(2, 11))
      num.extend('JQKA')
      return [(x, y) for x in type_li for y in num ]print(len(cards()), cards())

7.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}

def max_min_dic(*args):
      min_v = min(args)
      max_v = max(args)
      return {'max':max_v,'min':min_v}print(max_min_dic(2,3,6,7,9))

8.写函数,传入一个参数n,返回n的阶乘

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from functools import reduce
  def factorial(n):
      if n == 0:
          return 0
      elif n == 1:
          return 1
      else:
          return reduce(lambda x, y: x*y ,list(range(1, n)))
  print(factorial(5))

9.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

user_dic={
    'user':None,
    'is_authenticate':False
}

def read_file():
    with open('USER.TXT','r') as f:
        s = f.read().strip(',')
        user_info = eval(s)
    return user_info

def auth(user_info):
    username = input("account:").strip()
    password = input("password:").strip()
    print(user_info)
    if username in user_info['name'] and password in user_info['password']:
        print("success")
        user_dic['user'] = username
        user_dic['is_authenticate'] = True
        return user_dic
    else:
        print("Failure")
        return ''
     def login_required(func):

       def inner(*args, **kwargs):

           if args[0].get('is_authenticate'):

               ret = func(*args, **kwargs)

           else:

               exit('need authenticate')

           return ret

       return inner

   @login_required

   def print_info(acc_data):

       print('进入')

   user_info = read_file()

   user_data = auth(user_info)

   print(user_data)

   print_info(user_data)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值