12_Python语法示例(函数)

1.写一个函数mysum,此函数带有两个参数x,y打印出两个参数x,y的和

def mysum(x, y):
    print(x + y)


mysum(3, 2)

2.写一个函数print_even,传入一个数参n代表终止整数(不包含n),打印0-n之间所有偶数

def print_even(n):
    print(list(x for x in range(n) if x % 2 == 0))


print_even(10)

3.写一个函数mymax,返回两个数的最大值

def mymax(a, b):
    return a if a > b else b


print(mymax(3, 7))

4.写一个函数input_number用于读取输入的多个整数,输入负数时结束将输入的数形成列表返回给调用者

def input_number():
    L1 = list()
    while True:
        num = int(input("输入整数为负停止:") or "-1")
        if num >= 0:
            L1.append(num)
        else:
            break
    return L1


print(input_number())

5.写一个函数mysum,可以传入任意个实参的数字,返回所有实参的和

def mysum(*args):
    num = 0
    for i in args:
        num += i
    return num


print(mysum(1, 2, 3, 4))

6.仿照max写一个mymax函数,实现功能与max完全相同

def mymax(a, *args):  # *聚合

    def _max(*args):
        m = args[0]
        i = 1
        while i < len(args):
            if args[i] > m:
                m = args[i]
            i += 1
        return m

    if len(args) == 0:
        return _max(*a)  # *打散
    return _max(a, *args)  # *打散


print(mymax(1, 2, 3, 4))

7.写一个函数minmax,可以给出任意个数字实参,返回这些实参的最小数和最大数

# 方法一
def minmax(*args):
    return min(args), max(args)


a, b = minmax(2, 1, 3, 7, 4)
print(a, b)
# 方法二
def my_max_min(*args):
    args = list(args)
    # print(args)
    for i in range(0, len(args)-1):
        if args[i] > args[i+1]:
            args[i+1], args[i] = args[i], args[i+1]
    max_num = args[len(args)-1]
    for i in range(len(args)-1, 0, -1):
        if args[i] < args[i-1]:
            args[i-1], args[i] = args[i], args[i-1]
    min_num = args[0]
    print(args)  # [1, 2, 5, 3, 4, 6, 7]
    return (min_num, max_num)


res = my_max_min(5, 1, 7, 2, 4, 3, 6)
print(res)  # (1, 7)

8.写一个函数 mysum此函数可以传入一个参数,两个参数和三个参数

'''此函数的功能是返回从开始到终止值的和
    1) 当传入一个参数时,这个参数代表终止数
    2) 当传入两个参数时,第一个参数代表起始值,第二个参数代表终止值
    3) 当传入三个参数时,第三个参数代表步长
'''
def mysum(start, stop=None, step=1):
    if stop is None:
         start, stop = 0, start
    num = 0
    for i in range(start, stop, step):
         num += i
    return num


print(mysum(101))  # 50050
print(mysum(1, 100))  # 4950
print(mysum(0, 101, 2) )  # 2550

# 方法二:
def mysum(*args):
    return sum(range(*args))


print(mysum(101))  # 5050

9.创建一个列表L = []写一个函数 input_number读取数据放入列表L中

def input_number():
    L = list()
    while True:
        s = input("输入-1结束") or "-1"
        if s == "-1":
            break
        L.append(s)
    return L


print(input_number())

10.写一个函数primes(n),返回小于n的所有的素数的列表

def primes(n):
    if n < 2:
        return []
    L = [2]
    for i in range(n):  # 循环判断2-n之间的数是不是素数
        for j in range(2, i):  # 判断i是不是素数
            if i % j == 0:
                break
            if i - j == 1:
                L.append(i)
    return L


print(primes(10))

11.写一个lambda表达式,判断这个数的2次方+1能否被5整数,如果能整除返回True,否则返回False

fx = lambda x: True if (x**2 + 1) % 5 == 0 else False
print(fx(3))  # True

12.写一个lambda 表达式,求两个变量的最大值

fx = lambda x, y: x if x >y else y
print(fx(4, 3))  # 4

13.自己写一个程序,解释执行用户输入的任何语句

g = {}
l = {}
while True:
    s = input(">>>") or "-1"
    if s == "-1":
        break
    exec(s, g, l)

print(g)
print(l)

14.求: 1 + 1/2 + 1/4 + 1/8 + ... + 1/2**n 的和

# 方法一
    n = int(input(">>>") or '-1')
    print(sum([1/2**n for x in range(n + 1)]))
# 方法二
    res = sum(map(lambda x: 1/2**x, range(int(input(">>>")))))
    print(res)

15.求 1**2 + 2**2 + 3**2 + ... 9**2 的和

res = sum(map(lambda x: x**2, range(10)))
print(res)

16.求 1**9 + 2**8 + 3**7 + ... 9**1 的和

# 方法一
    print(sum(map(lambda x, y: x**y, range(1, 10), range(9, 0, -1))))
# 方法二
    print(sum(map(pow, range(1, 10)), range(9, 0, -1)))

17.编写函数 myfac(x) 计算x的阶乘 x! 例如:5! = 5 * 4 * 3 * 2 * 1

# 匿名函数和递归嵌套运用
fx = lambda x: 1 if x == 1 else x * fx(x - 1)
print(fx(5))  # 120

18.写程序算出1~20的阶乘的和 1! + 2! + 3! + .... + 19! + 20!

# 匿名函数和递归嵌套运用
fx = lambda x: 1 if x == 1 else x*fx(x - 1)
print(sum(map(fx, range(1, 21))))  # 2561327494111820313

19.已知有列表:L = [[3,5,8], 10, [[13, 14], 15], 18]

# 1) 写一个函数 print_list(lst) 打印出列表中所有数字
L = [[3,5,8], 10, [[13, 14], 15], 18]


def print_list(lst):
    for i in lst:
        if type(i) is list:
            print_list(i)
        else:
            print(i)


print_list(L)
# 2) 写一个函数sum_list(lst) 返回列表中所有数字的和
L = [[3,5,8], 10, [[13, 14], 15], 18]


def sum_list(lst):
    s = 0
    for i in lst:
        if type(i) is list:
              s += sum_list(i)
        else:
            s += i
    return s


print(sum_list(L))  # 86

20.输入一个圆的半径打印出这个圆的面积,输入一个圆的面积打印出这个圆的半径,用math模块实现

import math


print(math.pi * math.pow(int(input("r:")), 2))
print(math.sqrt(int(input("area:"))/math.pi))  # math.sqrt 求平方根

21.请编写函数 fun(n) 其功能是计算和 Sn = 1 + 1/1! + 1/2! + 1/3! + 1/4! +... +1/n!

import math


# 方法一
def fun(n):
    s = 0
    for i in range(n+1):
        s += 1/math.factorial(i)  # math.factorial(i) 求i的阶乘 i!
    print(s)


fun(10)  # 2.7182818011463845


# 方法二
def func(n):
    return sum(map(lambda i: 1/math.factorial(i), range(n+1)))


print(func(10))  # 2.7182818011463845

22.编写函数 fun(x, n) 计算s = 1 + x + x**2/2! + x**3/3! + x**n/n!的和并返回

import math


def fun(x, n):
     return sum(map(lambda n: math.pow(x, n)/math.factorial(n), range(n)))


print(fun(3.1, 10))  # 22.1668536447133

23.写一个程序,以电子时钟的格式显示时间:HH:MM:SS

import time


def show_time():
    while True:
        t = localtime()  # 年 月 日 时 分 秒 星期 一年中的第几天 夏令时
        s = "\r%02d:%02d:%02d" % t[3:6]  # \r 回车后的光标位置
        print(s, end='')
        time.sleep(1)


show_time()

24.输入你的生日,计算出你出生的那天是星期几?已经出生了多少天?

import time


y = int(input("输入出生的年:"))
m = int(input("输入出生的月:"))
d = int(input("输入出生的日:"))

t = time.mktime((y, m, d, 0, 0, 0, 0, 0, 0))
print("UTC时间的秒数:", t)

time_tuple = time.localtime(t)
week = time_tuple[6]
L = ['星期一',
    '星期二',
    '星期三',
    '星期四',
    '星期五',
    '星期六',
    '星期日']

print("这一天是:", L[week])

t = time.time() - t  # 从生日到现在过了多少秒
d = t / (60 * 60 * 24)  # t / 一天的秒数

print("您已出生", d, "")

25.可以作为密码的字符有:大小写的A-Z,0_9,下划线,写一个程序随机生成六位密码

import random


def get_random_passwd(n):
    source = [chr(x) for x in range(ord("a"), ord("z")+1)]
    source += [chr(x) for x in range(ord("A"), ord("Z")+1)]
    source += [str(x) for x in range(10)]
    code = ""
    while len(code) < n:
        code += random.choice(source)
    return code


print(get_random_passwd(6))

26.编写一个闹钟程序,启动时设置定时时间(小时和分钟),到时间后打印"时间到....." 然后退出程序

import time


def alarm():
    h = int(input("请输入小时: "))
    m = int(input("请输入分钟: "))
    while True:
        ct = time.localtime()  # 当前时间的元组
        if (h, m) == ct[3:5]:
            print("\n时间到...")
            return
        print("\r%02d:%02d:%02d" % ct[3:6], end='')
        time.sleep(1)


# 启动闹钟
alarm()

27.模拟斗地主发牌,扑克牌共54张,三个人,每人发17张牌,底牌留三张

'''
    花色:黑桃('\u2660'), 梅花('\u2663'), 方块('\u2665'), 红桃('\u2666')
    数值:A2-10JQK 大小王
    输入回车,打印第1个人的17张牌,输入回车,打印第2个人的17张牌
    输入回车,打印第3个人的17张牌,再输入回车,打印出三张底牌
'''
import random


def get_new_poker():
    kinds = ['\u2660', '\u2663', '\u2665', '\u2666']

    numbers = ['A']
    numbers += [str(x) for x in range(2, 11)]
    numbers += ['J', 'Q', 'K']
    # 以下生成52张牌
    L = [k + n for k in kinds for n in numbers]
    L += ['大王', '小王']
    return L


def play():
    poker = get_new_poker()
    random.shuffle(poker)
    input("按任意键发第一个人的牌: ")
    print("第一个人的牌是:", poker[:17])
    input("按任意键发第二个人的牌: ")
    print("第二个人的牌是:", poker[17:34])
    input("按任意键发第三个人的牌: ")
    print("第三个人的牌是:", poker[34:51])
    input("按任意键看底牌: ")
    print("底牌是:", poker[51:])


play()

28.写函数get_score来获取输入的学生成绩(0~100的整数),出现错误则返回0,输入正确返回这个数

def get_score():
    try:
        score = int(input("请输入成绩:"))
    except ValueError:
        return 0
    if score in range(101):
        return score
    return 0


score = get_score()
print('学生的成绩是:', score)

29.一个球从100米高度落下,每次落地后反弹高度为原高度的一半,再落下

'''
    1) 写程序算出皮球从第10次落地后反弹高度是多少?
    2) 球共经过多少米路径?
'''
def fall_height(m, n, s=0):
    s += m
    if n == 0:
        return m, s
    return fall_height(m / 2, n - 1, s)


ret = fall_height(100, 10)
print("最后落地后反弹高度是%s 球共经过%s米" % ret)

30.输入一个正整数,分解质因数,如90 = 2*3*3*5, (质因数是指最小能被原数整除的素数(不包含1))

def primefactor(n, lst, pf_lst):
    for i in lst:
        if n % i == 0:
            pf_lst.append(i)
            # 递归加入分解得到的质因数[2, 2, 3, 5]
            return primefactor(n / i, lst, pf_lst)


def qualty(n):
    qualty_lst = [2]
    # 拿到小于n的素数列表 qualty_lst
    for i in range(2, n//4+1):  # 最小分解质因数是4= 2*2, 优化算法n//4+1
        for j in range(2, i):
            if i % j == 0:
                break
            if i - j == 1:
                qualty_lst.append(i)
                # 循环加入90//2 +1 以内的质素
                # [2, 3, 5, 7, 11, 13, 17, 19, 23]
    pf_lst = []
    # 拿到小于n的分解质因数递归返回列表 pf_lst
    primefactor(n, qualty_lst, pf_lst)
    s = ""
    # 格式化输出
    for i in pf_lst:
        s += str(i)
    s = "%s = " % n + "*".join(s)
    print(s)


qualty(90)

31.已知s = {"工商银行", "建设银行", "中国银行", "农业银行"}

# 1.用for 语句遍历集合中的元素并打印
# 2.将上面的for 语句改写为while语句实现上面同样的功能
s = {"工商银行", "建设银行", "中国银行", "农业银行"}
for i in s:
    print(i)
t = iter(s)
try:
    while True:
        print(next(t))
except Exception:
    pass

32.写入一个生成器函数, myodd(start, stop) 用于生成start开始到stop结束(不包含stop)的所有奇数

def myodd(start, stop):
    while start < stop:
        if start % 2 != 0:
            yield start
        if start < stop:
            start += 1
            

for i in myodd(1, 100):
    print(i)
L = [x for x in myodd(1, 100)]
print(L)

33.写一个程序,读入任意行的文字数据,当输入空行时结束输入,打印带有行号的输入结果

L = []
while True:
    s = input("请输入: ")
    if not s:
        break
    L.append(s)
for t in enumerate(L, 1):  # t= (0, "hello")
    print("第%d行: %s" % t)

34.用生成器函数生成斐波那契数列的前n个数:1 1 2 3 5 8 13 ... n

# 1) 输出前 20 个数
# 2) 求前 30 个数的和
def fibonacci(n):
    a = 0
    b = 1
    for i in range(1, n+1):
        a, b = b, a + b
        yield a
        
        
for i in fibonacci(20):
    print(i)
print(sum(fibonacci(30)))

35.写程序打印杨辉三角(只打印6层)

'''
         1          0+1
        1 1         0+1 1+0
       1 2 1        0+1 1+1 1+0
      1 3 3 1       0+1 1+2 2+1 1+0
     1 4 6 4 1
    1 5 10 10 5 1
'''
def triangle(n):
    L = []
    if not L:
        L.append(1)
        yield L
    for i in range(n-1):
        R = []
        for i in range(len(L)-1):
            R.append(L[i]+L[i+1])
        L = [1] + R + [1]
        yield L
    
    
for i in triangle(6):
    s = ''
    for j in i:
        s += str(j) + ' '
    print(s.center(13))

36.将如下数据用文本编辑器写入到data.txt文件中

"""
    小张 13888888888
    小李 13999999999
    小赵 13666666666
    写程序读取数据,打印出姓名和电话号码,格式如 姓名: 小张, 电话: 13888888888
"""
def read_data():
    try:
        f = open("data.txt")
        L = []
        while True:
            s = f.readline()
            if not s:
                f.close()
                return L
            s = s.rstrip()
            name, number = s.split(" ")
            L.append((name, number))
    except IOError:
        print("打开文件失败")
        
        
def read_lst(L):
    for line in L:
        print("姓名:%s, 电话:%s" % line)
        
        
def main():
    L = read_data()
    read_lst(L)
    
    
main()

37.读入任意行的文字信息,当输入空行时结束输入,将读入的字符串存于列表写入文件 input.txt 中

def read_input():
    L = []
    while True:
        s = input("请输入: ")
        if not s:
            break
        L.append(s)
    return L


def write_input(L):
    try:
        # 打开文件
        f = open("input.txt", 'w')
        # 写入数据
        for line in L:
            f.write(line)
            f.write('\n')  # 写入换行符('\n', '\r\n')
        # 关闭文件
        f.close()
    except IOError:
        print("写文件失败")


def main():
    lst = read_input()
    print(lst)
    write_input(lst)


main()

38.从input.txt中读取之前输入的数据存入列表中,再加上行号进行打印显示,如 第1行: aaaa

def read_input_file(filename='input.txt'):
    f = open(filename)
    L = []
    while True:
    # 读取每一行数据
        s = f.readline()
        if not s:
        break
    # 把换行符'\n'去掉
        s = s.rstrip()
        L.append(s)  # 放入列表
    f.close()  # 关闭文件
    # 返回L绑定的列表
    return L


def print_file_info(L):
    for line in enumerate(L, 1):
        print("第%d行: %s" % line)


def main():
    lst = read_input_file()
    print(lst)
    print_file_info(lst)


main()

39.用装饰器实现用户验证

user_list = [
    {"name": "coco", "passwd": 123},
    {"name": "zhangsan", "passwd": 123},
    {"name": "lisi", "passwd": 123},
    {"name": "wangwu", "passwd": 123}
             ]  # 定义一个列表存储用户数据源
current_dic = {"username": None, "login": False}  # 记录用户登录状态

def auth(auth_type="MySQL.db"):  # 留给用户传递数据来源
    def auth_func(func):
            def wrapper(*args, **kwargs):
                print("数据库来源是: %s" % auth_type)
                if auth_type == user_list:
                    if current_dic["username"] and current_dic["login"]:
                        res = func(*args, **kwargs)
                        return res
                    username = input("请输入账号:").strip()
                    passwd = int(input("请输入密码:").strip())
                    for user_dic in user_list:
                        if username == user_dic["name"] and passwd ==user_dic["passwd"]:
                            current_dic["username"] = username
                            current_dic["login"] = True
                            ret = func(*args, **kwargs)
                            return ret
                    else:
                        print("账号或密码不正确")
                else:
                    print("请指定源数据库")

            return wrapper

    return auth_func


def index():
    print("欢迎来到主页")


@auth(auth_type=user_list)
def home(name):
    print("欢迎回家%s" %name)


@auth()
def shopping(name):
    print("%s的购物车里有[手机,外星人,Mac]" %name)


index()
home("coco")
shopping("coco")

49.学生信息管理项目

'''
    需要两个函数:
        input_student() 返回学生信息的字典的列表
        output_student(lst)  以表格式方打印学生信息
    学生信息:
        姓名(name)  字符串
        年龄(age)   整数
        成绩(score) 整数
    input_student()调用时等待用户输入学生信息,当输入姓名为空时结束输入形成字典后存如列表中返回
    L = input_student()
        请输入学生姓名: xiaozhang
        请输入学生年龄: 20
        请输入学生成绩: 98
        请输入学生姓名: xiaoli
        请输入学生年龄: 23
        请输入学生成绩: 100
        请输入学生姓名: <回车>输入结束
        此时列表数据为:
            L = [{'name':'xiaozhang',
            'age':20,
            'score': 98},
            {'name':'xiaoli',
            'age':23,
            'score': 100}
            ]
    def output_student(lst):pass
    print(L)  # 打印出字典的列表
    output_student(L)  # 打印出学生信息的表格如下:
        +-----------+--------+---------+
        |   name    |  age   |  score  |
        +-----------+--------+---------+
        | xiaozhang |  20    |    98   |
        |   xiaoli  |  23    |   100   |
        +-----------+--------+---------+
'''
def input_student():
    L = []
    while True:
        name = input("请输入学生姓名:") or '-1'
        if name == '-1':
            break
        age = int(input("请输入学生年龄:"))
        score = int(input("请输入学生成绩:"))
        L.append({'name': name,
                'age': age,
                'score': score
            })
    return L


def head(length):
    s = '+%s+%s+%s+' % ('-' * (length), '-'*5, '-'*7)
    print(s)


def body(length, *args):
    s = ('|%s|%s|%s|' % 
        (args[0].center(length), str(args[1]).center(5), str(args[2]).center(7)))
    print(s)


def output_student(lst):
    length = max(map(lambda x: len(x['name']), lst)) + 2
    head(length)  # 开始表格线+------+-----+-------+
    body(length, 'name', 'age', 'score')  # 抬头行| name | age | score |
    head(length)  # 分割表格线+------+-----+-------+

    for i in lst:
        info = (i['name'], i['age'], i['score'])
        body(length, *info)  # 内容
    head(length)  # 结束表格线+------+-----+-------+


L = input_student()
print(L)
# [{'name': 'coco', 'age': 18, 'score': 100}, {'name': 'gogo', 'age': 17, 'score': 60}]
output_student(L)

41.改写学生信息管理项目源码,要求带有操作界面

'''
    +--------------------------------+  # show_menu() 显示功能选择菜单
    | 1) 添加学生信息                |  # input_student()
    | 2) 显示所有学生的信息          |  # output_student()  可作为筛选的嵌套调用
    | 3) 删除学生信息                |  # delete_student()
    | 4) 修改学生成绩                |  # modify_student()
    | 5) 按学生成绩高-低显示学生信息 |  # desc_score()  4种排序并一个函数sort_student()
    | 6) 按学生成绩低-高显示学生信息 |  # asc_score()
    | 7) 按学生年龄高-低显示学生信息 |  # desc_age()
    | 8) 按学生年龄低-高显示学生信息 |  # asc_age()
    | 9) 保存学生信息到文件(si.txt)  |  # write_file()
    | 10) 从文件中读取数据(si.txt)   |  # read_file()
    | q) 退出                        |  # quit()
    +--------------------------------+
'''
# 显示功能选择菜单
def show_menu(lst):
    # 显示菜单
    show_list = [
        '+--------------------------------+',
        '1) 添加学生信息',
        '2) 显示所有学生的信息',
        '3) 删除学生信息',
        '4) 修改学生成绩',
        '5) 按学生成绩高-低显示学生信息',
        '6) 按学生成绩低-高显示学生信息',
        '7) 按学生年龄高-低显示学生信息',
        '8) 按学生年龄低-高显示学生信息',
        '9) 保存学生信息到文件(si.txt)',
        '10) 从文件中读取数据(si.txt)',
        'q) 退出',
        '+--------------------------------+'
    ]
    for row in show_list:
        print(row)

    # 选择菜单
    menu_dic = {
        '1': input_student,  # 添加
        '2': output_student,  # 显示
        '3': delete_student,  # 删除
        '4': modify_student,  # 修改
        '5': sort_student,  # 排序
        '6': sort_student,
        '7': sort_student,
        '8': sort_student,
        '9': write_file,  # 保存学生数据
        '10': read_file,  # 读取学生数据
        'q': quit  # 退出
    }

    # 选择功能
    choice = input('>>>') or '-1'
    if choice in menu_dic:
        if choice == '6':
            menu_dic[choice](lst, desc=False)
        elif choice == '7':
            menu_dic[choice](lst, basis='age')
        elif choice == '8':
            menu_dic[choice](lst, basis='age', desc=False)
        else:
            menu_dic[choice](lst)
    else:
        print("输入有误,请从新选择")


# 1.添加学生信息
def input_student(lst):
    while True:
        name = input("请输入学生姓名:") or '-1'
        if name == '-1': break
        age = input("请输入学生年龄:")
        score = input("请输入学生成绩:")
        lst.append({'name': name,
                  'age': age,
                  'score': score
                  })


# 2.显示所有学生信息
def output_student(lst):

    def head(length):
        s = '+%s+%s+%s+' % ('-' * (length), '-' * 5, '-' * 7)
        print(s)

    def body(length, *args):
        s = '|%s|%s|%s|' % (args[0].center(length), args[1].center(5), args[2].center(7))
        print(s)

    if lst:
        length = max(map(lambda x: len(x['name']), lst)) + 2
        head(length)  # 开始表格线+------+-----+-------+
        body(length, 'name', 'age', 'score')  # 抬头行| name | age | score |
        head(length)  # 分割表格线+------+-----+-------+

        for i in lst:
            info = (i['name'], i['age'], i['score'])
            body(length, *info)  # 内容
        head(length)  # 结束表格线+------+-----+-------+
    else:
        print("没有学生信息,请选择: 1)添加学生信息")


# 3.删除学生信息
def delete_student(lst):
    choice = input("请输入要删除学生的姓名:") or '-1'
    sign = False

    for i, item in enumerate(lst):
        if choice == item['name']:
            sign = True
            break
    else:
        print("你要删除的学生不存在")

    if sign:
        lst.pop(i)
        print("已删除学生:%s的信息" % choice)


# 修改学生成绩
def modify_student(lst):
    choice = input("请输入要修改学生的姓名:") or '-1'

    for item in lst:
        if choice == item['name']:
            temp_list = [item]
            output_student(temp_list)
            score = input("请输入新的成绩:") or '-1'
            item['score'] = score
            print("已修改学生:%s的成绩" % choice)
            break
    else:
        print("你要修改成绩的学生不存在")


# 排序-->按选择的条件排序列表后,作为实参传递给显示函数output_student(lst)
def sort_student(lst, basis='score', desc=True):  # 默认按年龄大到小
    lst = sorted(lst, key=lambda dic: int(dic[basis]), reverse=desc)

    output_student(lst)


# 保存学生信息
def write_file(lst, file="si.txt"):
    try:
        f = open(file, "w")
        for i in lst:
            s = "%s,%s,%s\n" % (i['name'], i['age'], i['score'])
            f.write(s)
        f.flush()
        f.close()
        print("已成功保存学生信息到[%s]文件" % file)
    except IOError:
        print("文件打开失败")
    

# 读取学生信息
def read_file(lst, file="si.txt"):
    try:
        f = open(file)
        while True:
            s = f.readline()
            if not s:
                f.close()
                break
            s = s.rstrip()  
            s = s.split(",")
            dic = {'name': s[0], 'age': s[1], 'score': s[2]}
            lst.append(dic) 
        print("已成功从文件:[%s]读取到学生信息" % file)
    except IOError:
        print("文件打开失败")


def main():
    """学生信息管理项目主逻辑入口"""
    while True:
        show_menu(L)


if __name__ == "__main__":
    L = []
    main()

你可能感兴趣的:(12_Python语法示例(函数))