在学习Python之前有不少读者可能已经学习过其他的一些编程语言,这样在学习本章知识时,将会事半功倍。而没有学习过其他编程语言的读者也不要气馁,通过对本节知识的系统学习,将奠定Python学习基础,加深对Python基础语法的理解。
在Python 2中有input()和raw_input()两个函数可以实现从标准输入读取数据,输入默认来自键盘,但是在Python 3中仅保留了input()函数,将所有输入默认为字符串,返回的是字符串类型。具体代码实现如下。
该程序运行后,结果如下。
在这个示例中,Python 3中的input()函数,将所有的输入都默认为字符串,返回的也是字符串类型,故在print(a+b)语句中会认为是两个字符串拼接而不是两个整数相加,故程序运行结果为34,而不是7。因此当读者想要使用input()函数输入一个整数,并计算整数之和时,可通过以下两种方式实现,第一种是强制类型转换,第二种是使用eval()函数。这两种方法的具体代码实现如下。
该程序运行后,结果如下。
上述代码中使用的eval()函数功能很强大,该函数可以将字符串当成有效的表达式来求值并返回计算结果。
在Python 3中,输出可以使用print()直接输出,其中print()函数默认输出当前内容后换行;也可以使用格式化输出,常见的格式化输出如下。
常用的字符串格式化代码如表2-1所示。
续表
常用的格式化操作符辅助指令如表2-2所示。
使用常用字符串格式化及常用格式化操作符辅助指令的具体实现代码如下。
该程序运行后,结果如下。
format()功能强大,该函数将字符串当成一个模板,通过传入的参数进行格式化,其使用{}作为特殊字符,和使用%格式化输出的功能一样。{}作为特殊字符匹配有以下3种情况。
(1)不带编号,按照顺序自动匹配;
(2)带数字编号,按照数字编号匹配,可以调换顺序;
(3)带关键字,按照关键字匹配,可以调换顺序。
使用format()函数的具体代码实现如下。
该程序运行后,结果如下。
f-string方法又被称为“格式化字符串文字”,是Python 3.6新引入的字符串格式化方法,相较于之前的字符串格式化方法,该方法更加简洁、易读,而且操作简便。f-string的使用方法是以f或F修饰符引领的字符串,使用{}来标记被替换的字段。使用f-string进行格式化输出时,可以在{}中填入替换内容,也可以在{}里面填入表达式或调用函数,Python会求出结果并将其返回到{}中。除此以外,f-string还可以用于多行字符串的格式化输出,但是在使用f-string时须注意{}内的引号不能和{}外的引号一样,否则会引起冲突。使用f-string进行格式化的具体代码如下。
该程序运行后,结果如下。
Python中的缩进和其他编程语言中的缩进略有不同。例如,在java中,合适的缩进会让程序看起来更加清晰简洁,但是缩进的错误不会影响代码的正确性,而在Python中,错误的缩进可能会导致程序的运行结果出现错误。在Python中,缩进表明了代码从哪里开始,到哪里结束,缩进的错误就如同在Java中括号打错了位置。在Python中一般缩进会使用4个空格,在字处理文档中常常使用制表符来进行缩进。在下面的代码使用if……else……来说明Python中的缩进规则。
该程序运行后,结果如下。
从上述代码可以看到if条件下的语句有缩进,说明这个语句是if条件成立的时候将会执行的语句,如果if条件不成立,则该缩进语句不会执行。一般来说,只要在正确的位置输入冒号:则IDLE会在下一行缩进。
所谓标识符就是在编写程序过程中自己定义的一些符号和名称,例如,变量名和函数名等都是标识符。下面介绍标识符组成规则和标识符命名规则。
(1)由字母、下画线和数字组成,但是不能以数字开头。
(2)区分大小写。
(3)不能和关键字重名。
(1)见名知意:在给标识符命名的时候,应该让别人一看到名字就知道这个标识符的功能和含义,以提高代码的可读性。
(2)驼峰命名方法:第一个单词以小写字母开始,后面的单词首字母大写,或者每个单词的首字母都大写。
(3)下画线连接单词:单词之间使用下画线连接。
关键字是一些被Python语言赋予特定含义的单词。一般不需要将所有的关键字都背下来,只需掌握常用的关键字即可。在Python中,可以使用import keyword语句查询关键字,具体实现代码如下。
该程序运行后,结果如下。
下面将简单介绍各个关键字的功能。读者不必刻意地去死记硬背关键字,在以后大量的编程实践中,我们自然会对常用关键字加深理解并记住它们。Python中的关键字及其含义如表2-3所示。
续表
Python中常用的运算符有算数运算符、比较运算符、赋值运算符、位运算符和逻辑运算符,下文将为读者详细介绍这些运算符的使用方法。
Python常用的算数运算符有+、-、*、/、%、**和//。
前面四个运算符号读者可能较为熟悉,含义与常用的加、减、乘、除一致。但要注意一个问题,大部分编程语言中整数的除法一般采用floor的方式,即当不能整除的时候,结果会抛弃小数部分,只保留整数部分,如3/2=1。Python中的除法和大多数编程语言中的除法不太一样。在Python中整数相除时,若不能整除则会得到一个浮点型的精确数值,也就是3/2=1.5。但是在有些情况下需要用到floor方式的除法,此时应当如何处理呢?不必担心,Python为读者提供了解决方法,在Python中,使用“//”来表示floor式的除法。
在Python中“%”表示取余的意思,如3%2=1。“**”则表示幂的意思,如a**b表示a的b次方。常用的算数运算符的具体代码实现如下。
该程序运行后,结果如下。
Python的比较运算符和大多数编程语言类似,一般比较运算符根据表达式的值的真假返回布尔类型的值。表2-4总结了常见的比较运算符及其功能。
针对上述比较运算符的具体使用方法,现举例如下。
该程序运行后,结果如下。
Python中常用的赋值运算符如表2-5所示,在程序的编写过程中经常会用到这些赋值运算符。
续表
这些运算符号中,“=”是人们最为熟悉的运算符,但在Python语言中,“=”不再是等于的意思,而是赋值的意思。在Python语言中,等于对应的符号是“==”,在使用过程中需注意。对于“+=”赋值运算符可以举个例子理解:a+=b相当于a=a+b,后面的3个赋值运算符功能类似。
Python中常用的位运算符如表2-6所示。
位运算符用于位运算,对操作数逐位进行操作,下面将通过真值表来说明这些位运算,真值表如表2-7所示。
从上述真值表可以看出,若相同位的两个数字都为1,则相与结果为1;若有一个数字为0,则相与结果为0。或运算中只要相同位中有一个数字为1,则结果为1;若相同位的数字都为0,则结果为0。异或运算的基本规则是相同位的两个数字不同,则结果为1,否则结果为0。左移运算符就是将运算数的各位全部左移若干位,高位丢弃,低位补0。例如,00110100<<2得到的结果就是:11010000。右移运算符就是将运算数的各位全部右移若干位,高位补0,低位丢弃。例如,00110100>>2得到的结果是:00001101。
在Python中,逻辑运算符有and、or和not。
(1)and操作符只有当左右两边的操作数都为真的时候,结果为真。
(2)or操作符,只要左右两边的操作数有一个为真,则结果为真。
(3)not操作符是一元操作符,它的作用是得到一个和操作数相反的布尔类型的值。
截至目前,读者已经对Python语言中的运算符有了总体的了解,那么下面看一个实例。
请大家计算一下5*2**3,其结果是多少?大家看到这个表达式时,可能会略有疑惑,当一个表达式中存在多种运算符时,应该如何运算?应该先计算哪部分呢?
为了防止混淆情况的出现,Python语言中的运算符设定了自己的优先级,当一个表达式中出现多种运算符的时候,可按照运算符优先级的高低进行运算。表2-8从高到低逐次列出了运算符的优先级。
这个运算符的优先级表不用刻意去记,若实在不知道运算符对应的优先级,加个括号即可。通过上述的运算符优先级表格,可以很容易地获得上述例子的答案为5*2**3=40。