python 学生信息管理系统(二)

  • 完整的代码放在《python 学生信息管理系统(一)》里,这里记录我学习中遇到的新问题。

附:编写好的部分学生信息文件 stu.txt如下:

{'id': '0101', 'name': '依依', 'chinese': 88, 'math': 2, 'english': 74}
{'id': '0102', 'name': '尔尔', 'chinese': 100, 'math': 100, 'english': 100}
{'id': '0103', 'name': '伞伞', 'chinese': 99, 'math': 80, 'english': 90}
{'id': '0104', 'name': '思思', 'chinese': 77, 'math': 100, 'english': 54}
{'id': '0105', 'name': '五五', 'chinese': 66, 'math': 99, 'english': 66}
{'id': '0106', 'name': '柳柳', 'chinese': 90, 'math': 58, 'english': 60}
{'id': '0107', 'name': '琪琪', 'chinese': 44, 'math': 68, 'english': 94}

问题与发现:

'''
eval函数就是实现list、dict、tuple与str之间的转化
返回传入字符串的表达式的结果
'''
# 1、eval
'''
with open('stu.txt', 'r', encoding='utf-8') as rfile:
    info = rfile.readlines()
print(info) # [“{xxx}\n”,“{xxx}\n”,“ ”,“ ”,“ ”,“ ”]
for item in info:
    print(eval(item))
    print(type(eval(item))) # dict
'''

'''
表格,规定宽度,对齐格式
'''
# 2、'{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
'''
lst = [{'id': '0103', 'name': '伞伞', 'chinese': 99, 'math': 80, 'english': 90},
       {'id': '0104', 'name': '思思', 'chinese': '100', 'math': '100', 'english': '100'}]
std='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}' # 字符串
print(std.format('ID','姓名','语文成绩','数学成绩','英语成绩','总成绩'))
for item in lst:
    print(std.format(item.get('id'),
                     item.get('name'),
                     item.get('chinese'),
                     item.get('math'),
                     item.get('english'),
                     int(item.get('chinese')) + int(item.get('math')) + int(item.get('english'))
                     ))
'''

'''
1, while True + continue
2, fun() 递归
两者等效(我猜)
'''
# 3、死循环 v.s 递归
'''
def fun1():
    while True:
        a = int(input('随便输入一个数字:'))
        if a > 0:
            print('输入大于0')
            break
        else:
            continue
    print('Congratulation!')

def fun2():
    a = int(input('随便输入一个数字:'))
    if a > 0:
        print('输入大于0')
        print('Congratulation!')
        return
    else:
        fun2()

if __name__ == '__main__':
    fun1()
    print('--------')
    fun2()
'''

'''
推荐阅读:https://blog.csdn.net/qq_40169189/article/details/108070945
下边的例子慢慢品,不好说
理解参数key:用来比较的数(好像得是个可迭代对象)
'''
# 4,lst.sort(key=xxx)
'''
lst = [(1,2),(3,1),(2,6),(5,5)]
lst.sort()
print(lst) # [(1, 2), (2, 6), (3, 1), (5, 5)]

def fun(lst):
    return lst[0]
lst.sort(key=fun,reverse=False)
print(lst) # [(1, 2), (2, 6), (3, 1), (5, 5)]

def fun2(lst):
    return lst[1] 
lst.sort(key=fun2,reverse=False)
print(lst) # [(3, 1), (1, 2), (5, 5), (2, 6)]
'''

# 5、lambda 匿名函数:lambda 参数:表达式
'''
x = lambda a : a + 10
print(x)       # <function <lambda> at 0x00000258A412F558>
print(x(5))    # 15

x = lambda a, b : a * b
print(x)       # <function <lambda> at 0x00000193DAACF798>
print(x(5, 6)) # 30

lst = [{'id': '0101', 'name': '依依', 'chinese': 88, 'math': 2, 'english': 100},
       {'id': '0102', 'name': '尔尔', 'chinese': 100, 'math': 100, 'english': 100},
       {'id': '0103', 'name': '伞伞', 'chinese': 99, 'math': 80, 'english': 90}
       ]
lst.sort(key=lambda x: int(x['chinese']),reverse=True) # 降序 x是字典
print(lst) # 0102 0103 0101
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值