第三方模块
time模块
import time #导入模块
# 获得时间戳timeStamp,距1970-1-1(unix操作系统将1970年1月1日作为时间纪元,因为32位系统只能表示68.1年,所以综合考虑选择1970年)的秒数
# 当前时间的时间戳
timeStamp = time.time()
# 指定时间的时间戳(strptime将指定时间转化为时间元组,mktime将时间元组转成时间戳)
timeStamp = time.mktime(time.strptime("2008-01-02 10:50:50","%Y-%m-%d %H:%M:%S" )))
# 获得本地时间的时间元组(localtime将时间戳转成时间元组)
time_struc = time.localtime(time.time())
# 时间元组转成时间字符串
time_str = time.strftime("%Y-%m-%d %H:%M:%S",time_struc)
三种形式的相互转化:
(1) 时间字符串 -> 时间元组 ->时间戳
(2)时间戳 -> 时间元组 ->时间字符串
时间元组是中间过渡形式,两头的时间字符串和时间戳不能直接互转。
(1)时间字符串转时间元组:strptime(“2008-01-02 10:50:50”,"%Y-%m-%d %H:%M:%S" )
时间元组转成时间戳:mktime()
(2) 时间戳转时间元组:localtime()
时间元组转时间字符串:strftime("%Y-%m-%d %H:%M:%S", localtime(time.time()))
例子:2018年1月3日的3天后的时间字符串形式
# 要转换的字符串时间
ori_str = '2018-5-3'
# 字符串时间->时间元组
ori_stru = time.strptime(ori_time,"%Y-%m-%d")
# 时间元组 -> 时间戳
ori_stamp = time.mktime(ori_stru)
# 3天后的时间戳
new_stamp = ori_stamp + 3600*24*3
# 时间戳转化成时间元组
new_stru = time.localtime(new_stamp)
# 时间元组转成字符串
new_str = time.strftime("%Y-%m-%d",new_stru)
print(new_str)
休眠time.sleep(1) 参数单位为秒
耗时 time.clock() 获得当前时间
# 打印程序执行时间
startTime = time.clock()
for x in range(0, 5):
print("*")
time.sleep(0.1) # 暂停0.1秒
endTime = time.clock()
print(endTime - startTime) # 打印程序执行时间
datetime模块
- 导入
from datetime import datetime,timedelta
- 获得日期时间,时间戳
# 获得日期时间
d1 = datetime.now()
d2 = datetime(2008,10,11,11,56,57)
# 获得年月日时分秒
d1.year
d1.month
......
# 转化成时间戳
d3 = datetime.timestamp(d1)
timedelta计算时间差
t1 = datetime(2008,11,11,12,11,22)
t2 = timedelta(days=3)
# 三天前的日期
t1-t2
# 三天后的日期
t1+t2
calendar模块
# 导入日历模块
import calendar
# 月份的万年历形式
c1 = calendar.month(2008,5)
# 月份的二维列表形式
c2 = calendar.monthcalendar(2008,5)
# 年份的万年历形式
c3 = calendar.calendar(2008)
# 是否闰年
c4 = calendar.isleap(2009)
# 两个年份间有几个闰年
c5 = calendar.leapdays(2000,2020)
# 返回某月的第一天是周几(周一为0),共几天
c6 = calendar.monthrange(2008,5)
# 返回星期几
c7 = calendar.weekday(2008,10,2)
pygame
- 指定国内源安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame
- 卸载
pip uninstall pygame
- 学习博客
pygame学习博客
学生成绩管理系统v2
选择值由menu.makeChoice()返回,由main()进行判断即可。这样将除了主程序以外的所有函数都放在menu模块中。
main.py
# ---coding:utf-8----
# 文件名: 作业2_main.py
# @Time:2020/2/24 15:58
import 作业2_menu as menu
def main():
while True:
menu.mainMenu()
subMenu = menu.makeChoice()
if subMenu == '0':
menu.shutDown()
elif subMenu == '1':
menu.infoInput()
elif subMenu == '2':
menu.infoOutput()
elif subMenu == '3':
menu.infoSearch()
elif subMenu == '4':
menu.infoOrder()
else:
print("请输入0、1、2、3、4中的一个。")
if __name__ == "__main__":
main()
menu.py
# ---coding:utf-8----
# 文件名: 作业2_menu.py
# @Time:2020/2/24 15:58
infoList = []
def mainMenu():
print('''******欢迎使⽤成绩管理系统********
[1] 学⽣信息输⼊
[2] 学⽣信息输出
[3] 查找学⽣信息
[4] 成绩排序
[0] 退出
********************************''')
def makeChoice():
while True:
subMenu = input("请输入你的选择【0-4】:")
return subMenu
def shutDown():
print("*" * 50)
print("谢谢使用,再见!")
print("*" * 50)
exit(0)
fm = "\t{:>8}\t{:>8}\t{:>8}\t{:>8}\t{:>8}\t{:^8}"
fm1 = "{:>5}{:>8}{:>5}{:>5}{:>5}{:>5}"
def infoInput():
while True:
info = input(f"请输入第{len(infoList) + 1}个学生的信息,按n退出(请按姓名、学号、数学成绩、计算机成绩输入,如张三,200901,95,100:)").split(",")
if len(infoList) > 30:
print("该班人数不超过30")
break
if info[0] == 'n':
print(infoList)
break
for i in infoList:
if i["id"] == info[1]:
print("重复输入相同id号学生")
break
else:
infoList.append({"name": info[0], "id": info[1], "math": int(info[2]), "computer": int(info[3])})
def infoOutput():
print(fm.format("姓名", "id", "数学", "计算机", "总分", "平均分"))
for k in infoList:
print(fm.format(k['name'], k['id'], k['math'], k['computer'], k['computer'] + k['math'],
(k['computer'] + k['math']) / 2))
def infoSearch():
id = input("输入要查找的学号:")
for k in infoList:
if k['id'] == id:
print(fm1.format(k['name'], k['id'], k['math'], k['computer'], k['computer'] + k['math'],
(k['computer'] + k['math']) / 2))
break
else:
print("无此id号")
def infoOrder():
if len(infoList) != 0:
for j in range(len(infoList) - 1):
for i in range(len(infoList) - 1 - j):
if infoList[i]['math'] + infoList[i]['computer'] < infoList[i + 1]['math'] + infoList[i + 1][
'computer']:
infoList[i], infoList[i + 1] = infoList[i + 1], infoList[i]
else:
print("没有任何学生记录")
print(fm.format("姓名", "id", "数学", "计算机", "总分", "平均分"))
for k in infoList:
print(fm.format(k['name'], k['id'], k['math'], k['computer'], k['computer'] + k['math'],
(k['computer'] + k['math']) / 2))