Python函数16道入门练习题

您所在的位置:网站首页 反函数题目 Python函数16道入门练习题

Python函数16道入门练习题

2023-11-15 07:19| 来源: 网络整理| 查看: 265

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=0 alpha=0 space=0 others=0 for c in s: if c.isdigit(): num += 1 elif c.isalpha(): alpha +=1 elif c == ' ': space += 1 else: others += 1 return {'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 = 1 while count "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=1 for i in range(num,0,-1): sum *= i return 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))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3