函数一

一、函数的初始

程序中如果没有函数的引用,会产生重复代码多,可读性差的特点。

函数就是封装一个功能。

二、函数名,函数体,关键字,函数的返回值

def my_len():
    #def 关键字 定义一个函数
    #my_len 函数名书写规则与变量一样
    #def与函数名中间一个空格
    #函数名():加上冒号
    #函数体
    count = 0
    for j in l1:
        count += 1
    print(count)
my_len

函数的执行:函数名+()

while True:
    print(222)
    print(666)
print(len([1,23,4]))

函数的返回值:

写函数,不要在函数中写print()

return

1、在函数中,遇到return结束函数。

2、将返回值给函数的调用者。

  无 return = return None

  return 1个值 该值是什么,就直接返回给函数的调用者,函数名()

  return 多个值,将多个值放到一个元组中,返回给函数的调用者。

三、函数的传参

函数分为形参和实参:

形参:形式参数,不代表实际的变量。

形参传参:1、位置传参。按顺序,一一对应。

      2、默认参数。传参则覆盖,不传则默认,默认参数永远在位置参数的后面。

实参:实际参数,带入形参中的变量

形参传参:1位置传参。按顺序,一一对应。

      2、关键字传参,不按顺序,一一对应。

      3、混合传参,关键字参数永远在位置参数的后面。

# def my_len(l):  # l 形式参数 形参
#     print(l)
#     count = 0
#     for j in l:
#         count += 1
#     return count
# a = 'fdsafdsafdsagfsadf'
# print(my_len(a))  # 实际参数 ,实参
# print(my_len([1,2,3]))
#实参角度:
    #1,位置传参。按顺序,一一对应。
# def func(a,b,c):
#     print(a)
#     print(b)
#     print(c)
# func('fdsafdas',3,4)
#写一个函数,功能比大小,
# def max_min(a,b):
#     if a > b:
#         return a
#     else:
#         return b
# num1 = int(input('请输入一个数:'))
# num2 = int(input('请输入另一个数:'))
# print(max_min(num1,num2))
#ps: 三元运算
# def max_min(a,b):
#     if a > b:
#         return a
#     else:
#         return b
# print(max_min(100,200))
# def max_min(a,b):
#     return a if a > b else b
# print(max_min(300,200))
    #2,关键字传参,不按顺序,一一对应。
# def max_min(a,b):
#     return a if a > b else b
# print(max_min(b = 300,a = 200))
    #3,混合传参,关键字参数永远在最后面。
# def func1(a,b,c,d,e):
#     print(a)
#     print(b)
#     print(c)
#     print(d)
#     print(e)
# func1(1,2,d=4,c=3,e=5)
# func1(1,4,d=2,c=3,e=5)
# 按照形参角度。
 #1,位置传参。按顺序,一一对应。
# def func(a,b,c):
#     print(a)
#     print(b)
#     print(c)
# func('fdsafdas',3,4)
#2,默认参数。
def func(a,b=666):  #
    print(a,b)
# func(1,2)
# func(1,777)
func(1,2)
# s = 'alex'.center(30,'*')
# print(s)
# def Infor_entry(username,sex='男'):
#     with open('name_list',encoding='utf-8',mode='a') as f1:
#         f1.write('{}\t{}\n'.format(username,sex))
#
# while True:
#     username = input('请输入姓名(男生以1开头)').strip()
#     if '1' in username:
#         username = username[1:]
#         Infor_entry(username)
#     else:
#         Infor_entry(username,'女')

 

# 2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
'''
def new_file(x):
    li = []
    for i in range(len(x)):
        if i%2 == 1:
            li.append(x[i])
    return li
l1 = ['adf','asdf','ab'] #写的函数
print(new_file(l1))
'''
'''
def not_know_file(x):
    li = []
    for i in range(len(x)):
        if i%2 == 1:
            li.append(x[i])
    return li
not_know_list = input('>>>')
l1 = not_know_file(not_know_list)
print(l1)
'''
# 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
'''
def decide_value(x):
    return 'length > 5' if len(x) > 5 else 'length <= 5'
decide = [1,2,3,4,5,6]
print(decide_value(decide))
'''

'''
def decide_value(x):
    new_list = []
    for i in x:
        new_list.append(i)
    if len(x) > 5:
        return '输入的对象大于5'
    else:return '输入的对象小于等于5'
value_input = input(">>")
print(decide_value(value_input))
'''
# 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
'''
def length_list(x):
    new_list = []
    for i in x:
        new_list.append(i)
    if len(x) > 2:
        return x[0:2]
new_input = ['adfasd','sadf','saf']
print(length_list(new_input))
'''
# 5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
'''
def leng_count(x):
    return len(x)
new_input = input('>>>')
print(leng_count(new_input))
'''
# 6、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
'''
def decide_value(x):
    for i in x:
        if i == ' ':
            return '含有空内容'
    else:return '不含空内容'
value_input = [1,2,' ',4]
print(decide_value(value_input))
'''
# 7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
#     dic = {"k1": "v1v1", "k2": [11,22,33,44]}
#     PS:字典中的value只能是字符串或列表
'''
def dic_value(dic):
    for i,j in dic.items():
        if len(j) > 2:
            j = j[0:2]
            dic[i] = j
    return dic
dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
print(dic_value(dic))
'''

# 8、写函数,接收两个数字参数,返回比较大的那个数字。
'''
def max_num(x,y):
    return x if x > y else y
one_input = input('>>')
two_input = input('>>')
print(max_num(int(one_input),int(two_input)))
'''
# 9、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。
import os
def file_revise(new_name,old_name,new_content,old_content):
    with open(old_name,encoding='utf-8') as f1,\
        open(new_name,'w',encoding='utf-8') as f2:
        for i in f1:
            i = i.replace(old_content,new_content)
            f2.write(i)
    os.remove(old_name)
    os.rename(new_name,old_name)
new_file_name = 'new.txt'
old_file_name = 'old.txt'
new_file_conten = 'aaaa'
old_file_conten = 'bbbb'
file_revise(new_file_name,old_file_name,new_file_conten,old_file_conten)
# 10、写一个函数完成三次登陆功能,再写一个函数完成注册功能(进阶)
def authentication():
    i = 0
    while i < 3:
        i += 1
        user_name = input('username')
        user_passwd = input('password')
        with open('text.txt',encoding='utf-8') as f:
            for j in f:
                j =j.strip().split(':')
                if j[0] == user_name and j[1] == user_passwd:
                    return True
def register():
    username = input('username')
    password = input('password')
    with open('text.txt','a',encoding='utf-8') as f1:
        f1.write('\n')
        f1.write(username)
        f1.write(':')
        f1.write(password)
    return '注册成功'
msg = '''请登录按A/a进行账号密码输入,按R/r进行注册'''
print(msg)
a_input = input("请输入>>")
if a_input.upper()== 'A':
    authentication_name = authentication()
    if authentication_name == None:
        print('登录失败,请按R进行注册')
        name_input = input('请输入')
        if name_input.upper() == 'R':
            register()
        else:
            print("SB")
elif a_input.upper() == 'R':
    register()

 

posted @ 2018-03-28 16:38  小杰~~  阅读(177)  评论(0编辑  收藏  举报