1.写函数,将传入的列表或元祖对象的奇数位索引对应的元素,
eg:13位置,作为新列表返回给调用者

def func(lst):# 要封装一个list()函数,因为题目要求返回一个列表return list(lst[1::2])
print(func([1,2,3,4,5,6,7,8,9,]))

2.写函数,判断用户传入的对象(string,list,tuple)长度是否大于5

重点:如何减少代码量

def func(s):# return可以返回一个功能性语句,return len(s) > 5
print(func("123456"))

3.写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果

重点:复习isdigit(),isalpha(),isspace(判断是否是空白字符,\n,\t,空格等)

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(s=''):num=0alpha=0space=0others=0for c in s:if c.isdigit():num += 1elif c.isalpha():alpha +=1elif c == ' ':space += 1else:others += 1return {'num':num,'alpha':alpha,'space':space,'others':others}
print(func(" 23 4 jjjsds32  /.,;[    e3e3e32e23e3dj9"))

4.写函数,接收两个数字参数,返回较大的那个数字

重点:三目运算,学会把简单的功能代码放到return后面

def func(a,b):return a if a > b else b
print(func(10,15))

5.写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,学历

用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数

函数接收到这些内容,将其追加到student_msg文件中

重点:复习文件操作

def func(name,age,edu,gender='男'):f = open('student_msg',mode='a',encoding='utf-8')f.write(name+'_'+gender+'_'+age+'_'+edu+'\n')f.flush()f.close()
while 1:NAME=input("请输入你的名字:")GENDER=input("请输入你的性别:")AGE=input("请输入你的年龄:")EDU=input("请输入你的学历:")if GENDER == '':func(NAME,AGE,EDU)else:func(NAME,AGE,EDU,GENDER)content = input("录入完毕,是否还要继续输入(输入q就退出):")if content.upper() == 'Q':break

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

重点:复习文件的修改

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import os
def modify_file(fileName,oldContent,newContent):with open(fileName,mode="r+",encoding="utf-8") as f1,\open(fileName+"_副本",mode="w+",encoding="utf-8") as f2:for line in f1:line = line.replace(oldContent,newContent)f2.write(line)os.remove(fileName)os.rename(fileName+"_副本",fileName)
modify_file("student_msg","1","a")

7.(难),写函数,具备注册(要有去重的功能),与3次登录的功能

重点:先写注册,把内容写到文件中去,核心是写去重.再写登录,可采用账号加密码双重验证的格式

# 先写注册函数
def regist():uname=input("请输入用户名:")f = open("userInfo",mode="r",encoding="utf-8")# 核心就是去重,去重肯定是一行一行去匹配的for line in f:un = line.strip().split("_")[0]if uname == un:print("用户名已存在,请重新输入")return# 易错点,else应该与for平级,因为是当for执行完了,还没找到重名,才去执行else的else:print("用户名可用!")upwd=input("请输入密码:")f = open("userInfo",mode="a",encoding="utf-8")f.write(uname+"_"+upwd+"\n")f.flush()f.close()# 再写登录函数
def login():count = 1while count <= 3:uname = input(f"请输入登录的用户名(还有{4-count}次机会):")upwd = input("请输入登录的密码:")f = open("userInfo",mode="r",encoding="utf-8")for line in f:name, pwd = line.strip().split("_")# if有多重方式可写,最好的还是同时验证账号和密码if uname == name and upwd == pwd:print("登录成功")return True # 对于正常的操作,可以返回True,方便后面调用,eg: if login(): ...else:print("登录失败,用户名或密码错误")count += 1print("次数已用完")return False# regist()
# regist()
# regist()
login()

8.写函数,接收n个数字,返回这些数字的和(动态传参)

重点:学会用*args来接收n个位置参数

def func(*args):sum = 0for el in args:sum += elreturn sum
print(func(1,2,3,4,5,6,4,4,3))

9.理解打印出来的a,b,c分别是什么,为什么?

重点:理解return的默认返回值None,理解函数里面收到的a,b是没有用上的

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a,b = 10,20
def func(a,b):a, b = 3,5print(a,b)
c=func(b,a)
print(c)
print(a,b)

10.在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里

重点:利用实参中的*和**来进行打散,**用于dict

def func(*args,**kwargs):print(args,kwargs)
s="hello"
func(*[1,2,3],*(3,3,),*{"name","height"},**{"name":"jiang","age":18})

11.写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回

例如,传过来[1,“哈哈”,2,“哦”],返回"1_哈哈_2_哦"

重点:join()只能处理字符串,所以要结合for循环才行

def func(lst):sum=""for el in lst:sum += str(el)+"_"return sum[:-1] # 要去掉最后一个_下划线
print(func([1,"哈哈",2,"哦"]))

12.写函数,传入一个数字,返回这个数的阶乘

重点:累乘,学会李永range函数的步长

def func(num):sum=1for i in range(num,0,-1):sum *= ireturn sum
print(func(10))

13.写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple

例如:[(“红心”,“2”),(“梅花”,“2”)…(“方块”,“A”)]

重点:笛卡尔积的代码要记一记

def func():lst=[]style = ["红心","梅花","方块","黑桃"]number = ["A","1","2","3","4","5","6","7","8","9","10","j","q","k"]for i in style:for j in number:lst.append((i,j))return lst
print(func())

14.使用2中以上的方法,让inner函数运行

重点:return是可以返回函数,或变量,也就是内存地址的

# 第1种方法
def func():def inner():print("666")inner()
func()
# 第2种方法
def func():def inner():print("666")print("in",inner) # 与下面的out对比,可发现,地址是一样的,说明内存空间是可以返回的return inner
i = func()
i()
print("out",i)
# 第3种方法
def func():def inner():print("666")return inner
func()()

15.用代码写一个99乘法表

重点:笛卡尔积,确定外层循环,再确定内层循环,最后去掉换行符

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
for i in range(1,10):for j in range(1,i+1):print("%s * %s = %s" %(i,j,i*j),end="\t")print()

16.解释为什么list1和list3结果是一样

重点:因为函数执行在最前面,意味着形参里面的list在最开始就创建了

而当再次执行函数的时候,并不会重新开辟内存,仍然会使用上次开辟的那一块

def fn(val,list=[]):print(id(list))list.append(val)return list
list1=fn(3)
list2=fn(10,list=[])
list3=fn("a")
print(list1)   # [3, 'a']
print(list2)   #  [10]
print(list3)   # [3, 'a']
print(id(list1)) #list1,list3,以及函数里面的list的id是一样的
print(id(list2))
print(id(list3))

Python函数16道入门练习题相关推荐

  1. [ZZ]知名互联网公司Python的16道经典面试题及答案

    知名互联网公司Python的16道经典面试题及答案 https://mp.weixin.qq.com/s/To0kYQk6ivYL1Lr8aGlEUw 知名互联网公司Python的16道经典面试题及答 ...

  2. Python学习16 正则表达式3 练习题

    用户名匹配 1.用户名匹配:由数字.大小写字母.下划线_.中横线-组成,长度为6-12位,不能以数字开头. import re username='ab578_-SDF' result=re.sear ...

  3. Python 100道基础入门练习题(附答案)【这期完结】

    嗨害大家好鸭!我是小熊猫❤ 一直忘记给大家整完剩下的python基础100题- 还好有小伙伴提醒了我嘿嘿 这就给大家更新上! 实例021:猴子偷桃 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃 ...

  4. Python 函数声明和调用 - Python零基础入门教程

    目录 一.前言 二.Python 函数定义 三.Python 函数的调用 四.Python 函数传参 1.Python 函数常规参数 2.Python 函数缺省参数 3.Python 函数不定长参数 ...

  5. python函数测验题_python函数练习题

    python函数练习题 python函数练习题所练习的不仅仅是函数如何使用,还包括基础知识的运用,尽管所要实现的算法在不使用函数的情况下也都能实现,而且很多算法在前面都已经学习实践过.但对初学者而言, ...

  6. 《Python编程:从入门到实践》第二章练习题

    <Python编程:从入门到实践>第二章练习题 <Python编程:从入门到实践>第二章练习题 1-1 简单消息 2-2 多条简单消息 2-3 个性化消息 2-4 调整名字的大 ...

  7. Python入门练习题026:字符串写入的行数

    """ 记录下自己自学python和练习写的代码,等以后进阶后,再回来看一下曾经自己写的代码有多蠢Python入门练习题026:字符串写入的行数 把字符串S字符写入行中, ...

  8. Python入坑函数:从入门到走火入魔,你懂得

    很多人都在谈论函数式编程(Functional Programming),只是很多人站在不同的角度看到的是完全不一样的风景.坚持实用主义的 Python 老司机们对待 FP 的态度应该更加包容,虽然他 ...

  9. python函数定义和其四种参数_python入门第九课:函数的定义及多种参数传递方式...

    本教程使用的课本是<Python编程:从入门到实践>,作者:[美] Eric Matthes 本节介绍Python中的函数,函数是可以反复使用的一段代码,有了函数能大大简化编程工作量,还能 ...

最新文章

  1. gcc 编译 java,编译lineage,gcc的版本问题
  2. sqlserⅴer随机函数_SQL server 随机数函数
  3. 算法导论——二叉查找树
  4. 【Luogu4512】多项式除法(FFT)
  5. Xamarin.Forms使用Slider注意问题
  6. python字符串内建函数详解
  7. DIV CSS浏览器的兼容性
  8. Spring Boot笔记-@ComponentScan初步解析
  9. oracle批量插入并且返回自增主键_mybatis + (oracle)实现主键自增 + 插入数据并返回主键...
  10. 一些自己使用VS2015的心得
  11. kindeditor php 上传错误,kindeditor 上传图片失败,该怎么解决
  12. Android AIDL原理
  13. mysqldump --set-gtid-purged=OFF
  14. python爬取微博热搜榜
  15. 第一章 python初窥 课后练习题
  16. 重写Math 中sin cos asin  acos 方法,将其入参或者返回值 从弧度改为角度
  17. 13.3 跳格子游戏
  18. 2021年安全员-B证考试题及安全员-B证报名考试
  19. java两个时间相差分钟_Java计算两个日期时间相差几天,几小时,几分钟等
  20. sap的pod确认_销售订单_两次过账的POD确认

热门文章

  1. Ooui:在浏览器中运行.NET应用
  2. 最新图解 FileZilla Server + FlashFXP 快速傻瓜式搭建FTP服务
  3. bootstrap-table表格插件的使用案例
  4. 运维自动化轻量级工具pssh
  5. IOS UIView 放大缩小
  6. qtp web随机获取下拉框的值
  7. 转tigase 安装
  8. 三层交换机不能完全取代路由的作用
  9. WSUS注冊表導入,工作組用戶系統更新
  10. 扫地机器人腿是咕噜_扫地机器人|如何避免买到“智障”,看这篇