热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python实验心得_Python语言初学总结

课程名称:程序设计方法学实验1:程序设计语言工具时间:2015年10月21日星期三,第3、4节地点:理工楼

课程名称:程序设计方法学

实验1:程序设计语言工具

时间:2015年10月21日星期三,第3、4节 地点:理工楼1#208

一、实验目的

1、深入理解程序设计语言及其几种常见的编程范型;

2、激发学生对编程语言的兴趣;

3、培养学生的自学能力。

二、实验内容

学习一门新的程序设计语言(不能是已经学习过的C\C#\C++\JAVA\PASCAL),通过使用该门语言编程,解决一个实际问题。

要求:

1.实验报告中应首先详细说明待解决的问题、你所使用的语言以及选择的开发环境;

2.实验报告中应附上完整的源代码(有对应的设计图表,如流程图等请一并附上),以及在本地计算机上调试、运行该程序的截图(要求截图的结果中能体现个人的学号、姓名等信息)。

3.结合上述解题过程,简要说明该语言的特点(如其支持的编程范型及语法特性等)和你使用该语言的心得体会。(要求500字以上)

三、实验环境

硬件条件:微型计算机

操作系统:Windows 7 操作系统

开发环境:PyCharm (Python IDE集成开发环境)

四、实验步骤和结果

(一)待解决的问题描述

输入若干学生的信息(信息包括:学生姓名、学生成绩、学生性别),然后根据学生成绩对学生进行排序,按成绩由高到低输出学生信息列表。

(二)解决该问题所用的语言

Python 语言(基于 Python 2.X 版本)

(三)选择的开发环境:

PyCharm (Python IDE集成开发环境)

(四)解题过程的实验操作步骤

1.分析题目后所画出的程序流程图如下:

818082-20160715211705967-264465200.png

2.在集成开发环境“PyCharm”上的代码实现如下:

#-*-coding:utf-8-*- # 此语句的作用是:让py源文件里面可以有中文

classStudent(object):#自定义一个Student类,包括学号、姓名、分数、性别等信息

def __init__(self,number, name, score, sex):#初始化Student,参数 number,name,score,sex

self.number =number

self.name=name

self.score=score

self.sex=sexdef __cmp__(self, other):#重写比较方法,根据Student类属性score进行比较

returncmp(self.score, other.score)defshow(self):return 'number:'+self.number+'name:'+self.name+'; score:'+str(self.score)+'sex:'+self.sexdef get_input(): #获取控制台的输入

number = raw_input('Please input number :')if not number: #当学号输入为空时,返回None

return(None,None,None,None )

name= raw_input('Please input name :')

score= raw_input('Please input %s\'s score :' %name)

sex= raw_input('Please input %s\'s sex :'%name)if number and name and score andsex:return (number, name,int(score),sex) #为方便比较,将score强制转换为int型

else:return(None, None, None, None)defmain():

s_list=[]while True: #一直循环输入【学生的学号、姓名、成绩及性别】

number, name, score, sex =get_input()if number and name and score andsex:

s=Student(number, name, score, sex)

s_list.append(s)else: #当输入姓名或成绩为空时跳出循环

breaks_list.sort(reverse=True) #对Student实体进行排序(reverse=True表示逆序排序,即从大到小排序)

print("排序列表如下所示:")for i, s in enumerate(s_list): #遍历已经排序的实体列表,并进行显示

print ' '.join([str(i+1), s.number, s.name, str(s.score), s.sex])if __name__ == '__main__': #调用主函数

main()

3.对上述代码的相关说明

(1)在代码首行输入了:#-*-coding:utf-8-*-的原因:

py文件当中是不支持中文的,即使输入的注释是中文也不行,为了解决这个问题,就需要把文件编码类型改为UTF-8的类型,输入这个代码就可以让PY源文件里面有中文了。而且注意要写在所有代码的第一行。

(2)关于函数的定义:

①关键字def用于告诉Python,正在定义一个新的函数。

②类中的函数名称两边有下划线(如:__init__)。这种特殊方法意味着,当创建新的对象时,该方法就会被调用,就可以把我们自己的类型变成Python的内置类型那样了,此即提高了程序的可读性。

③函数定义的参数列表中有自动的self,这样当Python在调用某个对象中的某个方法时,会自动将该对象的引用作为该方法的第一个参数传进去,然后我们就可以在该函数中访问该对象的实例变量了(即在相应的变量上使用点运算符)。所以,关于self的规则就意味着,当我们在定义一个方法时,除了实际需要传入的那些参数之外,还必须再多写一个。相反,当我们在调用某个方法时,实际提供的参数要比该方法定义中所需的少一个才行。最重要的一点是需要将self放在成员变量之前。

(3)Python自带一些预定义的函数,成为内置函数(built-in),上述代码中使用raw_input内置函数来从键盘上读取一行文本。“raw”意味着它将以字符串的形式返回用户输入的一切内容,哪怕有些内容看上去像是一个数字。如果希望用户输入一个数字,那就必须用int或float将得到的字符串转换为所需的类型。

(4)s_list.sort(reverse=True)是对Student实体进行排序(reverse=True表示逆序排序,即从大到小排序;若reverse=False则表示是顺序排序,即从小到大排序)。

4.代码执行结果截图如下:

818082-20160715211834342-1014784295.png

五、实验结果和讨论

通过分析问题,画出了相应的流程图,编写代码实现,调试运行代码后得到的示例结果截图如下所示:

818082-20160715211849686-215035516.png

六、总结

(一)本次实验按时按量完成。通过实验基本掌握了新的一门程序设计语言。

(二)本次实验使我深入理解了程序设计语言及其几种常见的编程范型;也、激发了我对编程语言的兴趣;而且很大程度的提升了我的自学能力。

(三)Python 语言的特点:

1.Python是一种面向对象、解释型的计算机程序设计语言。

2.Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public License)协议。

3.Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

4.Python具有丰富和强大的库。

5.Python常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起,能够跨平台使用。

6.Python三大优点:简单、功能强大、支持面向对象。

7.Python支持命令式编程、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。

(四)使用Python 语言的心得体会

Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,能简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的很多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。

首先Python 语言是一门脚本语言。Python在设计上坚持了清晰划一的风格,简洁优雅,没有了大括号,没有了分号,使得Python变得非常的整洁。而且它是一门易读、易维护,可移植性非常好,可以在linux、windows、苹果等多种操作系统上运行,并且被大量用户所欢迎的、用途广泛的语言。Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。这就是Python给我的有很严格的缩进规则的感觉。

其次Python 语言是一门动态语言。在命令行下面输入一个1+1,回车之后就能给个2的结果。不要编译连接等步骤,一边写代码一边就可以有结果。不过在此我更是觉得Python语言或许更适合作为一门入门语言。首先从语法上讲,Python语言比现在很多作为第一编程语言 (C/C++、Visual Basic等)要简单很多。其次,这种解释语言的机制,更能让我们这些初学者体验到学习成果,不需要了解很多东西,也能编出个小程序来,这个过程比其他语言要快和简单很多。再次,从我们自学的角度来讲,搭建Python的基础开发环境也很简单,只要安装一个十几兆的程序,就得到了一个命令行工具,一个简单的GUI的IDEL,还有其他文档等,这样就不必把时间太多用在开发工具上了,它不像学习C++等这些语言还要去逐步熟悉Visual C++等工具。此外,还有一点就是Python的学习很有弹性,我稍微学一点就能做点东西,而想要深入研究仍然有无穷的方向可以选择,因为Python的应用范围也是很广阔。

最后,Python 是强类型的。为变量指定数据类型称为“强类型”。Python有一个统一的、明确的、强大的类型系统,比Java的类型系统更强,而且Python的这种强类型是属于动态型的强类型。

真正的学习其实是在自己写应用脚本或程序的时候,在写的时候肯定会有不明白的东西,这就需要去网上查资料,一来二去就明白了。学习Python语言的过程中查阅了不少线上线下的资料,遇到不会的东西,通过自己先查资料自己解决,这样印象深刻,渐渐总结经验,提高编程可复用性。



推荐阅读
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • ARM汇编基础基于Keil创建STM32汇编程序的编写
    文章目录一、新建项目(1)工具介绍(2)创建项目:二、配置环境(1)配置芯片&#x ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本指南详细介绍了如何利用华为云对象存储服务构建视频点播(VoD)平台。通过结合开源技术如Ceph、WordPress、PHP和Nginx,用户可以高效地实现数据存储、内容管理和网站搭建。主要内容涵盖华为云对象存储系统的配置步骤、性能优化及安全设置,为开发者提供全面的技术支持。 ... [详细]
author-avatar
菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有