Python函数基础

Python函数基础

1. 定义函数的三种方式

空函数

def func1():
    # TODO .....
    pass

无参函数

def fun1():
    print("test")

有参函数

def compare(a, b):
    if a > b:
        return True

2. 函数的返回值

  • 函数可用return 返回值

  • return 可终止函数

  • return 可返回多个值,返回值之间用逗号隔开

  • 返回值可以是任意数据类型

  • 当无返回值时,默认返回None

3. 函数的参数

  • 形参,定义函数时使用,一般具有描述意义,用于接收实参
  • 实参,调用函数时使用,具体的值
  • 形参有位置形参,默认形参
  • 实参有位置实参,关键字实参

练习

  1. 编写注册函数, 将用户信息保存到文件内,用户信息可保存为`nick:123|sean:456|tank:789'

  2. 编写登录函数, 从文件内读取用户信息进行身份识别

import os
def check_forbid_char(input_str, forbid_str_list):
    for item in forbid_str_list:
        if item in input_str:
            return item
def check_input(prompt, forbid_str):
    ans = input(prompt + "
").strip()
    item = check_forbid_char(ans, forbid_str)
    if item:
        print("输入中不允许出现%s" % item)
    elif len(ans) == 0:
        print("输入不能为空")
    else:
        return ans
def register():
    forbid_str = '|:'
    name = check_input("请输入姓名", forbid_str)
    passwd = check_input("请数目密码", forbid_str)
    file_exists = os.path.exists(file_name)
    if name and passwd:
        with open(file_name, "a") as f:
            # 如果文件存在,写入数据前,加上分隔符 |
            if file_exists:
                f.write("|")
            f.write(f"{name}:{passwd}")
        print('数据写入成功!')
    else:
        print('数据未写入,请重新输入')

file_name = "user_infor.txt"
def read_data():
    with open(file_name, "r") as f:
        all_users_infor = {}
        data = f.read().split("|")
        for user in data:
            user_infor = user.split(":")
            all_users_infor[user_infor[0]] = user_infor[1]
        return all_users_infor
def login_in():
    # 读取用户信息
    data = read_data()
    name = input("请输入用户名:
").strip()
    passwd = input("请输入秘密:
").strip()
    if name in data.keys():
        if data[name] == passwd:
            print("登陆成功!")
        else:
            print("密码错误")
    else:
        print("用户名不存在")

choose = input("注册请输入1,登陆请输入2:
").strip()
if choose == "1":
    register()
elif choose == "2":
    login_in()
else: 
    print("输入选项错误")
原文地址:https://www.cnblogs.com/YajunRan/p/11448652.html