欢迎光临
我们一起进阶

Python函数——定义函数

扫码或搜索:沉默王二
发送 290992
即可立即永久解锁本站全部文章
神马是函数?

函数: 对功能或者动作的封装
函数的定义
def 函数名(形参列表):
函数体(return)

ret = 函数名(实参列表)
函数的返回值
return,只要执行到return 函数的本次调用就会被停止

1.如果函数不写return, 没有返回值。 接收到的是None
2.写了return。 return后面什么都不写或者return后面的是None. 返回None
3.return 一个值。 返回一个结果
4.return 值,值,值 返回多个值。结果是元组

函数的参数(一部分)

参数:函数在调用的时候给函数传递的信息
形参: 在函数声明的位置的变量
实参: 在函数调用的时候给出的具体的值
传参: 把实参赋值给形参的过程

分类:

实参

  1. 位置参数. 按照位置给形参传递信息
  2. 关键字参数. 按照形参的名字给参数传递信息
  3. 混合参数. 先位置后关键字

形参

  1. 位置参数
  2. 默认值参数, 必须写在位置参数后面
  3. 动态参数

1,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

def odd_index(lis):
    my_lis = []
    for i in range(len(lis)):
        if i % 2 == 1:
            my_lis.append(lis[i])
    return my_lis
lis=[0,1,2,3,4,5,6,7,8,9,]
print(odd_index(lis))

2,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

def my_len(el):
    if type(el)==int or type(el)==float:
        el=str(el)
    count = 0
    for x in el:
        count += 1
    if count >= 5:
        return True
    else:
        return False
# test=[1,2,3,4,1,2.3,]
test=123456.1
# test="abcdefg"
# test=(1,2,3,4,5)
if my_len(test):
    print("这个对象长度大于等于5")
else:
    print("这个对象长度小于5")

3,写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。

def back2(el):
    if type(el)==int or type(el)==float:
        el=str(el)
    count=0
    for i in el:
        count+=1
    if count>2:
        return el[0],el[1]
    else:
        return False
test=[1,3,2,4,4,4,6,34,5,6]
if back2(test):
    print(back2(test))
else:
    print("列表小于或等于2")

4,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。

def count_str(el):
    if type(el)==str:
        num,str_num,white=0,0,0
        for i in el:
            if i.isdigit():
                num+=1
            elif i.isalpha():
                str_num+=1
            else:
                white+=1
        return num,str_num,white
    else:
        return False
test="abcd...1234..1   234sd"
if count_str(test):
    s=count_str(test)
    print("这串字符%s中包含数字:%s,字母:%s,其他:%s"%(test,s[0],s[1],s[2]))
else:
    print("老铁,请输入字符串")

5,写函数,接收两个数字参数,返回比较大的那个数字。

def compare(num1,num2):
        if num1>num2:
            return num1,num2
        else:
            return num2,num1
    # else:
    #     return False
# num1,num2=1.9,2.1
num1=input("请输入第一个数字:")
num2=input("请输入第二个数字:")
if (type(num1) == int or type(num1) == float) and (type(num2) == int or type(num2) == float):
    num1, num2 = float(num1), float(num2)
else:
    print("请重新输入数字")

resurt=compare(num1,num2)
if resurt:
    print("%s和%s进行比较,结果是%s>%s"%(num1,num2,resurt[0],resurt[1]))
else:
    print("请输入两组数字进行比较")
写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

def chack(el):
    dict_new={}
    for k,v in el.items():
        if len(v)>2:
            dict_new[k]=v
    return dict_new
# dict={"A":"aaaa","B":"Bbbbb","C":"ccc","a":"a"}
dic = {"k1": "v1v1", "k2": [11,22,33,44],"new":[1]}
print(chack(dic))

6, 写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。

def count_list_to_dict(el):
    if type(el)==list:
        dic={}
        for i in range(len(el)):
            dic[i]=el[i]
        return dic
    else:
        return False
lis=[11,22,33]
print(count_list_to_dict(lis))

9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。
用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。

def student_msg(name,sex,age,Bachelor_of_Science):
    dict={"name":name,"sex":sex,"age":age,"学历":Bachelor_of_Science}
    f=open("student_msg",mode="a",encoding="utf-8")
    f.write(str(dict)+"\n")
    f.flush()
    f.close()
    return dict
# name="big"
# sex="man"
# age="18"
# Bs="本科"
name=input("请录入姓名:")
sex=input("请录入性别:")
age=int(input("请录入年龄:"))
Bs=input("请录入学历:")
print(student_msg(name,sex,age,Bs))

10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。

def student_msg(name,age,Bachelor_of_Science,sex="男"):
    dic={"name":name,"sex":sex,"age":age,"学历":Bachelor_of_Science}
    f=open("student_msg",mode="a",encoding="utf-8")
    f.write(str(dic)+"\n")
    f.flush()
    f.close()
    return dict
# name="big"
# sex="man"
# age="18"
# Bs="本科"
def Q_break(el):
    if el.upper()=="Q":
        return False
flag=True
while flag:
    print("请输入Q退出")
    sex = input("请录入性别(默认:男-直接回车即可):")
    if sex=="":
        sex="男"
    if Q_break(sex) == False:
        break
    name=input("请录入姓名:")
    if Q_break(name)==False:
        break
    age=input("请录入年龄:")
    if Q_break(age)==False:
        break
    Bs=input("请录入学历:")
    if Q_break(Bs)==False:
        break
    student_msg(name,age,Bs,sex)

11,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。

def change_name(file_name1,file_name2):
    f=open("./test/%s"%(file_name1),mode="a",encoding="utf-8")
    f1= open("./test/%s" % (file_name2), mode="a",encoding="utf-8")
    f.write(content)
    f.flush()
    f.close()
    f1.write(content)
    f1.flush()
    f1.close()
    # print(f.read())
    # print(f1.read())
    # f1=open("./test",mode="wb")
    # for i in f:
    #     f1.write(i)
    # pass
file_name1=input("请输入要改的文件名:")
file_name2=input("请输入要改的文件名:")
# file_name3=input("请输入要改的文件名:")
content=input("请输入要修改的内容:[反斜线 (“\n”) 作为换行符]")
# content="今天我\n寒夜里看雪飘过\n喜欢你"
change_name(file_name1,file_name2)

写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)

def register(username,passwd):#定义注册函数,把收到的用户名和密存到文件
    dic={}
    dic["username"]=username.strip()
    dic["passwd"] =passwd.strip()
    add_user = open("./users.txt", mode="a", encoding="utf-8")
    add_user.write(str(dic) + "\n")
    add_user.flush()
    add_user.close()
flag_use=True
flag_passwd=True
while flag_use or flag_passwd :
    username=input("请输入你的用户名(必须大于两个字符!):").strip()
    if len(username)<3:
        print("用户名太短,必须大于两个字符!")
        continue
    else:
        flag_use = False
        file_user=open("./users.txt",mode="r",encoding="utf-8")
        for el in file_user:
            dict_name1 = eval(el.strip())
            if username == dict_name1["username"]:
                print("用户名已经存在,请重新输入用户名!")
                break
        else:
            passwd=input("请输入密码:(必须包含大写字母,小写字母或其他字符,还没开发出来)").strip()
            if len(passwd)<8:
                print("密码太短,必须大于8个字符!")
                continue
            else:
                flag_passwd=False
register(username,passwd)
def login(username_input,passwd_input):
    file_chack=open("./users.txt",mode="r",encoding="utf-8")
    for i in file_chack:
        dict_name = eval(i.strip())
        if username_input==dict_name["username"] and passwd_input==dict_name["passwd"]:
            return True
        else:
            return False
count=0
while count<3:
    username_input=input("请输入用户名:").strip()
    passwd_input=input("请输入密码:").strip()
    back=login(username_input, passwd_input)
    if back:
        print("恭喜老铁登录成功!")
        break
    else:
        print("老铁三碗不过岗,下次再来玩!(剩余次数%s):"%(2-count))
    count+=1

赞(0) 打赏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

小白学堂,学的不止是技术,更是前程

关于我们免责声明

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏