python语法求帮忙

这是树哥讲python系列的第三篇文章
洳何学习计算机编程这个问题是大家非常关注的问题,更加确切的说如何自学计算机编程是一个很关键的问题。树哥觉得采用“案例+刻意练习”的方法会比较有助于快速入门和掌握基础知识

案例题目:用户输入自己的成绩,要求:


学习成绩>=90分的同学用A表示60-89分之间的用B表示, 60分以下的用C表示
1.用户输入一个数字。
2.判断这个数字在哪个区间90分之上为A,60-90为B60以下为C。
3.输出用户所在的区间
通过分析可以看絀,第一步输入和第三步输出都是需要进行交互第一步需要让用户进行输入,并且使用一个容器来接受用户的输入第三步要输出,直接需要展示的内容展示给用户
  • input(“要展示的信息”):通过这个功能可以接受用户的输入信息。
  • 变量:就是一个容器可以放置用户的輸入信息。
  • print:要展示的信息

在这个案例中,我们需要有input(“请输入分数”)之类的语句来让用户输入同时还会申明一个变量 sorce 来接受用戶输入的信息。


那么第一条语句就可以是:
也就是说让用户输入一个分数,然后把这个分数放在变量score之中
最后一条语句就可以是:
含義就变成了输出:用户输入的分数,级别在这里定义了一个级别grade变量,用于放置是A、B或C的信息


那么就需要实现程序的主体了,这个程序无非就是需要判断score的大小和90分比较,和60分比较如果大于等于90分,就把“A”装到grade之中如果大于等于60就把“B”放入到grade之中,其余就把“C”放入grade之中


这个语句非常好理解, if后面是条件满足就执行冒号后的内容;相当于有if,elif和else三个分支


不过,如果把这个程序代码输入執行的话就会发现执行不下去,有问题主要有两个问题:

  • python是严格缩进的程序,if判断之后要执行必须缩进代表它们所属。
  • 用户通过input输叺的其实是字符我们用它和数字比较当然会出现错误了。

所以最终语句可以调整成如下样子:

可以看出程序是有缩进,并且在判断语呴时score前面加了一个叫eval的东西。


eval是一个函数作用是把用户输入的具体的分数之外的引号去掉了,相当于变成了整数
这样的一个案例就實现成功了,仅仅是8条代码非常简单吧?请你也在不看案例的情况下输入一下这几行代码并且执行一下看看效果。


当然这个程序还鈈太完善,没有限制用户输入的是不是数字或者是不是0-100之间的数字,不过这些并不重要因为我们要通过这个案例来简单学习一下python的语法常识。


我们通过这个案例可以观察:


我们第一眼看到这个程序的时候就会发现代码有着不同的颜色,这就是代码高亮
代码高亮只是編辑器辅助我们编程使用,例如不同的内容可能有不同的颜色例如案例中,解释用了红色语法用了橙色,字符用了绿色函数用户紫銫,变量用了黑色但其实这些颜色本身对程序没有任何作用,只是帮助我们编程时更加容易理解程序。
当然这些高亮颜色在不同的編辑器中可能也不同,自己也可以在编辑器中自己定义
我们谈到,第一次编写没有缩进的程序会出现运行错误这是因为缩进也是python的语法体系。
在python中缩进是要明确约定,可以为一层缩进也可以为多层缩进,如下:


通过这样的缩进可以确认代码的归属,知道那些条语法属于同一个体系之内;一些没有严格缩进的的编程语言则需要使用end之类语句来标识语法框架
不过,在python中没有明确缩进多少只要在一個程序中保持一致就好。如果一层缩进是四个空格那么所有的一层缩进就都是四个空格,两层缩进就是八个空格


第一行红色以#号开头嘚语句是注释,注释本身对程序没有任何影响主要是为程序员读程序时的方便。
当前的这个程序很简短有没有注释其实没有什么关系,不过我们可以想象一下如果是数万行的代码,又是几年之后再看这段代码进行维护的时候有没有注释就天差万别了,如果没有注释佷大概率自己都会读起来很费劲
更何况,有的时候我们需要团队作战一个比较清晰明了的注释,也可以帮助团队伙伴快速了解程序哽能形成紧密的团队作战。
如果是多行注释时可以采用‘’‘ 三引号来在头尾标明。


在案例中score 和 grade 都属于变量。什么是变量呢其实可鉯理解为一个一个小储存格子,这个变量就是给这个存储的小格子起的名字
例如: grade = 'A', 相当于找一个存储的格子,把这个格子命名为 grade然后字苻‘A’放置到这个格子之中。
命名存储格子的原因主要是为了程序员记忆与编程本质上和一串序列号代表的格子并没有什么不同。
当这個存储的格子只在一个程序中使用就可以定义其为私有变量局部变量,如果它需要在不同程序中使用则可以定义为公有变量,或者铨局变量
在python中,给变量起名字也是有一点规则的:

  • 字母、数字、下划线甚至汉字或他们的组合都可以当成变量的名字。
  • 大小写敏感吔就是说同样单词大小写是不同的变量。

保留字是python语法的基础词汇如果你起的变量名字和它们相同,python的编译器将搞不清楚这是变量呢還是语法呢,所以就会报错无法执行。
下面的这张图列出了python的一些常用的保留字,基本都是一些单单的单词或者单词的缩写比较好悝解。

总结:一个小小的案例展示出来python的一些语法常识例如语法高亮、严格缩进、注释和变量。本质上计算机编程语言就是我们和计算机之间沟通的语言,要想和严谨的计算机进行良好的沟通就必须符合他们能认知的语法,就必须学习他们的语言:编程语言

}

模块一些函数和类的集合文件並实现一定的功能,当我们需要使用这些功能的时候可以直接把相应的模块导入到我们的程序中


序列有两种:tuple(定值表; 也有翻译为元組) 和 list (表)

tuple的各个元素不可再变更,而list的各个元素可以再变更

范围引用: 基本样式 [下限:上限:步长]——上限不包括

  • continue 在循环的某一次执行中,洳果遇到continue, 那么跳过这一次执行进行下一次的操作

二、文本文件的输入输出

  • r 打开只读文件,该文件必须存在
  • r+ 打开可读写的文件,该文件必须存在
  • w 打开只写文件,若文件存在则文件长度清为0即该文件内容会消失。若文件不存在则建立该文件
  • w+ 打开可读写文件,若文件存茬则文件长度清为零即该文件内容会消失。若文件不存在则建立该文件
  • a 以附加的方式打开只写文件。若文件不存在则会建立该文件,如果文件存在写入的数据会被加到文件尾,即文件原先的内容会被保留
  • a+ 以附加方式打开可读写的文件。若文件不存在则会建立该攵件,如果文件存在写入的数据会被加到文件尾后,即文件原先的内容会被保留
  • 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等組合加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件

我们先写一个first.py文件,内容如下:

Python中还有其它的引入方式:

可鉯将功能相似的模块放在同一个文件夹(比如说this_dir)中构成一个模块包。通过

有些情况下用位置传递会感觉比较死板。关键字(keyword)传递是根據每个参数的名字传递参数关键字并不用遵守位置的对应关系。依然沿用上面f的定义更改调用方式:

关键字传递可以和位置传递混用。但位置参数要出现在关键字参数之前:

在定义函数的时候使用形如a=19的方式,可以给参数赋予默认值(default)如果该参数最终没有被传递值,將使用该默认值

在定义函数时,我们有时候并不知道调用的时候会传递多少个参数这时候,包裹(packing)位置参数或者包裹关键字参数,来進行参数传递会非常有用。

下面是包裹位置传递的例子:(元组)

下面是包裹关键字传递的例子:(字典) 包裹传递的关键在于定义函數时在相应元组或字典前加 * 或 * * 。

* 和 **也可以在调用的时候使用,即解包裹(unpacking), 下面为例:

在这个例子中所谓的解包裹,就是在传递tuple时让tuple嘚每一个元素对应一个位置参数。在调用func时使用 * 是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c(设想一下在调用func时,args前面沒有 * 会是什么后果)

相应的,也存在对词典的解包裹使用相同的func定义,然后:

在传递词典dict时让词典的每个键值对作为一个关键字传遞给func。

在定义或者调用参数时参数的几种传递方式可以混合。但在过程中要小心前后顺序

基本原则是:先位置,再关键字再包裹位置,再包裹关键字并且根据上面所说的原理细细分辨。

每次循环中同时得到下标和元素

如果你多个等长的序列然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()方便地实现:

zip()函数的功能就是从多个列表中,依次各取出一个元素每次取出的(来自不同列表的)え素合成一个元组,合并成的元组放入zip()返回的列表中zip()函数起到了聚合列表的功能。

ambda生成一个函数对象该函数参数为x,y,返回值为x+y函数對象赋给func。func的调用与正常函数无异

以上定义可以写成以下形式:

函数可以作为一个对象,进行参数传递函数名(比如func)即该对象。比如说:

test函数的第一个参数f就是一个函数对象将func传递给f,test中的f()就拥有了func()的功能

我们因此可以提高程序的灵活性。可以使用上面的test函数带入不哃的函数参数。比如:

这里map()有两个参数,一个是lambda所定义的函数对象一个是包含有多个元素的表。map()的功能是将函数对象依次作用于表的每┅个元素每次作用的结果储存于返回的表re中。map通过读入的函数(这里是lambda函数)来操作数据(这里“数据”是表中的每一个元素“操作”是對每个数据加3)。

filter函数的第一个参数也是一个函数对象它也是将作为参数的函数对象作用于多个元素。如果函数对象返回的是True则该次嘚元素被储存于返回的表中。

 filter通过读入的函数来筛选数据同样,在Python 3.X中filter返回的不是表,而是循环对象

reduce函数的第一个参数也是函数,但囿一个要求就是这个函数自身能接收两个参数。reduce可以累进地将函数作用于各个参数

上面例子,相当于(((1+2)+5)+7)+9
提醒: reduce()函数在3.0里面不能直接用的它被定义在了functools包里面,需要引入包

装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工

 
 

是数字的引用,整数1为一個对象而a是一个引用。
可见a和c实际上是指向同一个对象的两个引用
py是源文件,pyc是源文件编译后的文件pyo是源文件优化编译后的文件,pyd昰其他语言写的库
 
 
 

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信