Python 学习之路3
接下来把剩下的实验一起写上去
实验2
写一个学生类,属性有学号,姓名,成绩(三门),方法有输出,求平均成绩。
设计思路:
1. 先写一个学生类,并向里面写一个求平均值和输出信息的方法。
2. 在写一个执行端口的函数,有登记学生信息,查看学生信息和退出的操作。
3. 选择查看时,会先打印出学生列表,再选择学生,会出现一个选择端口有查看学生信息和平均值的操作。
4. 最后通过各种语句与框架结合起来
我写的是一个类似学生管理系统的一小部分,
class Student(object): # 定义一个学生类
def __init__(self, stu_id, name, score1, score2, score3): # 实例化
self.stu_id = stu_id
self.name = name
self.score1 = score1
self.score2 = score2
self.score3 = score3
def average_(self):
'''求平均值,并打印出来'''
ave_score = (int(self.score1) + int(self.score2) + int(self.score3)) / 3
print('%s 学生语数英平均值:%s 分' % (self.name, ave_score))
def information(self):
'''打印个人信息'''
print('''
-----Student %s-------
学号:%s
语文:%s 分
数学:%s 分
英语:%s 分
''' % (self.name, self.stu_id, self.score1, self.score2, self.score3))
def judge_digit(n):
'''判断 输入的num 是不是 数字字符 若是则返回成整数 若不是则重新输入'''
while True:
num = input('%s成绩:' % n)
if num.isdigit():
num = int(num)
return num
else:
print('please input number')
def register(stu_list):
'''学生登记函数'''
while True:
print('''
-----Student Register-------
【输入T登记,输入F返回】
''')
temp = input('命令:')
if temp == 'T':
name = input('学生名字:')
stu_id = input('学号:')
score1 = judge_digit('语文')
score2 = judge_digit('数学')
score3 = judge_digit('英语')
stu = Student(stu_id, name, score1, score2, score3)
stu_list.append(stu) # 向学生列表添加该学生的地址
print('登记成功!')
elif temp == 'F':
break
else:
print('I don not know what you want to do.\tPlease input again!')
return stu_list
def inqurie(stu_list):
'''查看学生相关档案函数'''
judge = True
while judge:
if len(stu_list) == 0: # 当学生列表没有学生时,打印无学生并返回
print('暂无学生')
break
else: # 否则打印学生列表
for index, i in enumerate(stu_list):
print(index + 1, i.name)
tem = input('输入F 返回,输入T继续') if tem == 'F':
judge = False elif tem == 'T':
stu_num = input('查看的学生:') if stu_num.isdigit():
stu_num = int(stu_num)
if len(stu_list) >= stu_num: # 当输入的序号有对应的学生
while True:
print('''
-------Student %s--------
1.学号及成绩
2.平均分
3.返回
''' % stu_list[stu_num - 1].name)
stu_handle = input('操作:')
if stu_handle.isdigit():
stu_handle = int(stu_handle) if stu_handle == 1: # 执行学生类里输出方法
stu_list[stu_num - 1].information() elif stu_handle == 2: # 执行类里平均值方法
stu_list[stu_num - 1].average_() elif stu_handle == 3:
break else:
print('please input again!')
else:
print('please input again!')
else:
print('please input again!')
else:
print('please input again!')
else:
print('please input again!')
def main():
'''实行窗口'''
stu_list = []
# s1=Student('001','陈浩南',100,100,100)#可以在此处添加初始学生
# stu_list.append(s1)
while True:
print('''
------学生档案------
1.登记
2.查询
3.退出程序
''')
temp = input('操作(输入编号):')
if temp.isdigit():
temp = int(temp)
if temp == 1: # 执行学生登记的函数
stu_list = register(stu_list)
elif temp == 2: # 执行查看学生档案的函数
inqurie(stu_list)
elif temp == 3:
break
else:
print('please input again!')
else:
print('please input again!')
main()
实验3
将学生信息(上次上机的学生类)存入文本文件,已及从文本文件读入信息输出学生信息
设计思路:
1. 先写把上次的学生类复制过来并修改
2. 创建一个存储‘学生信息’的文本
3. 在学生类里写一个把类的属性写到文本里的方法
4. 在写个读并打印文本里的信息的函数
5. 最后通过各种语句与框架结合起来
class Student(object): # 定义一个学生类
def __init__(self, stu_id, name, score1, score2, score3): # 实例化
self.stu_id = stu_id
self.name = name
self.score1 = score1
self.score2 = score2
self.score3 = score3
def average_(self):
'''求平均值,并打印出来'''
ave_score = (int(self.score1) + int(self.score2) + int(self.score3)) / 3
print('%s 学生语数英平均值:%s 分' % (self.name, ave_score))
def canned_date(self):
'''把信息写入文本中 '''
with open('D:\\学生信息.txt','a',encoding='utf-8') as f1:
f1.write('\n')
f1.write(self.name.ljust(7))
f1.write(str(self.stu_id).ljust(8))
f1.write(str(self.score1).ljust(6))
f1.write(str(self.score2).ljust(6))
f1.write(str(self.score3).ljust(6))
print('>>>>>>>写入成功')
def judge_digit(n):
'''判断 输入的num 是不是 数字字符 若是则返回成整数 若不是则重新输入'''
while True:
num = input('%s成绩:'%n)
if num.isdigit():
num = int(num)
return num
else:
print('please input number')
def judge_digit(n):
'''判断 输入的num 是不是 数字字符 若是则返回成整数 若不是则重新输入'''
while True:
num = input('%s成绩:'%n)
if num.isdigit():
num = int(num)
return num
else:
print('please input number')
def information():
'''打印学生信息'''
with open('D:\\学生信息.txt', 'r', encoding='utf-8')as f:
for i in f:
print(i)
def build_Text():
'''创建学生信息文本,用以存储信息'''
with open('D:\\学生信息.txt','w',encoding='utf-8')as c:
c.write('姓名 学号 语文 数学 英语')
def main():
'''实行窗口'''
build_Text()#第一次才需使用,以后可将其注释掉
while True:
print('''
------学生档案------
1.登记
2.查询
3.退出程序
''')
temp = input('操作(输入编号):')
if temp.isdigit():
temp = int(temp)
if temp == 1: # 执行学生登记的函数
register()
elif temp == 2: # 实行打印学生信息的函数
information()
elif temp == 3:
break
else:
print('please input again!')
else:
print('please input again!')
main()
基础和经验有限- -
Python 学习之路3的更多相关文章
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路-Day2-Python基础3
Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- python 学习之路开始了
python 学习之路开始了.....记录点点滴滴....
- python学习之路,2018.8.9
python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!
- Python学习之路——pycharm的第一个项目
Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...
- python学习之路------你想要的都在这里了
python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...
随机推荐
- 数据收集利器 cAdvisor - 每天5分钟玩转 Docker 容器技术(82)
cAdvisor 是 google 开发的容器监控工具,我们来看看 cAdvisor 有什么能耐. 在 host 中运行 cAdvisor 容器. docker run \ --volume=/:/r ...
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置
1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...
- Python基础3切片,字符串的方法
切片:截取字符串某一段字符,并不改变原字符串.结构:[起始位置:终止位置:步长] 但不包括终止位置.所谓:顾头不顾尾 索引:序列中每个元素都是有编号的,都是从0开始编号的.使用负数索引时,Pytho ...
- 购物篮算法的理解-基于R的应用
是无监督机器学习方法,用于知识发现,而非预测,无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤.缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合理. 一,概念术语 ...
- LeetCode 342. Power of Four (4的次方)
Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example:Giv ...
- Java基础笔记11
异常: 即java程序在运行时出现的意外情况. java如何处理异常. try{ //可能发生异常的地方 }catch(异常类型 对象){ //异常处理处 }catch(异常类型 对象){ }.. ...
- Java--谈一谈代理
一.代理概念 代理在我们日常生活经常听到这个名词,比如我们想看下google我们需要找个代理服务器来帮我们一下,比如我们想买一个外国的什么东西需要在代购网站或者找朋友帮忙在外国买一下,用概念一点 ...
- shell 组合新的变量名
shell 组合新的变量名 普通变量 name=yushuang var=name # 要获取到yushuang res=`eval echo '$'"$var"` echo $r ...
- 前端菜鸟学习之DOM事件处理
一.事件处理程序 1.DOM0级事件处理程序:就是将一个函数赋值给一个事件处理程序属性,至今仍为现代所有浏览器所支持,主要得益于其跨浏览器的优势,要使用DOM0级事件 首先要得到操作对象的引用,具体实 ...
- 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4298 Solved: 1944[Submit][Sta ...