13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Python代码可以有多简洁,看看它如何实现数组求极值

背景

Python 最大的优势是不需编译,而且代码简洁。我初学 Python 时,被它的简洁震惊到了,尤其是文件操作和数组操作,只需要一行代码搞定文件读入,相同功能, Java 的 IO 操作基本上是十行代码量。所以,偶尔也会用 Python 做一些小事情。

今天来整理一个 Python 的练习题,需求描述如下:

按Q结束输入,并将合法输入的数据写入到一个文件。

实现分析

本例用到的知识点:

成绩信息收集

编写一个 score_writer.py 脚本文件,内容如下:

 
 
 
  1. import re 
  2.  
  3. try: 
  4.     # define file reader 
  5.     f1 = open('E:/score.log','w',encoding='utf-8') 
  6.     f1.write('name,score\r\n') 
  7.     # a pattern check score input 
  8.     pattern = "^[0-9]{1,2}(\.[0-9]{1,2})?$" 
  9.     print('请输入姓名和考试成绩,按 Q 结束,成绩范围 [1-100],最多允许两位小数。') 
  10.  
  11.     # receive name 
  12.     name = input("姓名:") 
  13.     while name != 'Q' and name != 'q' : 
  14.         score = input("成绩:").strip() 
  15.         while re.match(pattern,score)==None and score != '100': 
  16.             score = input("成绩不合法,请重新输入:").strip() 
  17.  
  18.         print(name,':',score) 
  19.         f1.write(name+','+score+'\r\n') 
  20.         name = input("姓名:") 
  21.     print('输入结束,存储数据') 
  22. except IOError: 
  23.      print("操作异常") 
  24. finally: 
  25.     f1.close() 

运行结果:

成绩数据计算

编写一个 score_reader.py 脚本文件,内容如下:

 
 
 
  1. from pandas import DataFrame 
  2. import pandas as pd 
  3.  
  4. # array to load score 
  5. try: 
  6.     # define file reader 
  7.     data = pd.read_csv('E:/score.log') 
  8.     print(data) 
  9.     print('平均值',data['score'].mean(axis = 0)) 
  10.     print(data['name'][data['score'].idxmax()],' 分数最高:',data['score'].max(axis = 0)) 
  11.     print(data['name'][data['score'].idxmin()],' 分数最低:',data['score'].min(axis = 0)) 
  12. except IOError: 
  13.      print("文件不存在") 

由于存储成的是 CVS 文件,标题是 name,scroe ,转换成 DataFrame 后计算最值的索引小标后取名字列对应的元素就能输出最值的姓名了。

换一个不存在的文件路径,程序捕获异常:

编程启示录

Python 读写文件真是简洁呀,两行代码搞定,而 Java 要写几十行,真是两个极端。

想起前两天看到一个语言对比图:


本文名称:Python代码可以有多简洁,看看它如何实现数组求极值
网站URL:http://cdbrznjsb.com/article/dhhsigs.html

其他资讯

让你的专属顾问为你服务