我们更喜欢称之为数值型,实际上解释器会根据传递的值的不同在底层细分的。我们会看到int,float等。例如在交互式命令行下写下面的程序:
a=1b=2.0print(a)print(b)type(a)type(b)
上面的print()是Python的输出打印函数,最基础的程序结果输出函数。而type()函数是查看对象的类型是什么,这些都是Python的内置函数,先记住就好。结果是a的类型为int,b的类型为float,这个例子的目的是为了说明Python中的数字统称为数值型,但底层还是区分的。
数值型的基本运算
数字是可以进行数学上的加减乘除的运算的,Python中的运算符也是符合数学上的基本运算法则的,其中的+,-,*,/数学中的加减乘除,%不表示百分号,表示取余,这和大多数的编程语言的基本运算符是相同的。//两个“除”表示取整,就是所谓的取商。和前面对应,这很好理解。数学中还有一个很重要的运算——乘方。在Python用两个乘号**表示。比如下面的程序,结果可以口算:
17+1515-1517*1517/1517%517//55**3
口算可能会算错,但是程序不会,他就是这么地“忠诚”,你说啥,它做啥,前提是你得会说(表达),我想这可能是编程代码叫做编程语言的原因之一吧。
变量初识
我们在交互式编程环境总是输入数字进行运算,完成一次运算后,我们就不能方便地再次使用之前的数字,需要用一个容器来存储之前输入的数字,这个容器就是:变量。其实变量,它就是在内存中开辟一块的地址,变量名就是这块地址的名字。但是在Python不一定是这样子的,后面会涉及。之前说到Python在定义变量的时候,不需要指定变量的数据类型,是的,只需要将数据对象赋值"="给变量即可。在使用变量的时候,很容易会遇到错误的,类似这样子:这就是变量未定义的错误,属于NameError,我们平白无故地给Python解释器输入了一个n,Python的内心是这样子的:我是谁?我在哪?n是啥?它不认识,当然会报错了。正确的变量使用需要先定义,不需要像C++一样声明。所谓定义就是:给变量赋值"="。例如下面求矩形面积的代码:
width=10height=20print(width*height)
变量的命名规则,这个是常识也是需要遵循的:
不能以数字开头
只能是由字母、下划线和数字组成
不能和Python的保留字冲突。
遵循命名规则,变量尽量要容易理解,有意义。函数名要小写,类名遵循驼峰命名法。
10*201*2_
最后输入的"_"就会当成是最后一次输出结果2。
print('hello,world,我Hi华仔啦!')print("hello,world,我Hi华仔啦!")print('''hello world!我Hi华仔啦!''')
三单引号的字符串,很明显地不同于前面两种,
前两种字符串是不能直接手动进行换行的,只能在一行中书写。每一行叫做一个物理行,Python解释器在解释运行代码时以物理行为基准,除非将它变为逻辑行,所谓逻辑行,就是告诉Python,我这里换行了哦!不是语法错误。
三单引号就包含了逻辑行的信息,可以直接换行,它同时是一个预格式字符串,就是三单引号里面是怎么输入的,就怎么输出。相当于Html中的pre标签。前两种不行,非要在编辑的时候换行怎么办?加上一个反斜杠即可。
print('hello world,\ 我Hi华仔啦!')
另外想实现上面的需求可以这样子做:
a=('hello world,' '我Hi华仔啦!')
其实这种方法很偏门,不是很常用,原理就是Python会认为:如果两个字符串的中间只有空格,,那么他会识别为这是一个字符串。例如:
print('Py' 'thon')
单引号和双引号配合使用起来,可以满足一些特定的需求,一般规则就是单双引号混用,不可同时用。比如引用话语时:
momsaid='Mom said:"Do I make it clear? "'print(monsaid)
字符串的一些常用操作符:
+,加号表示连接符,将两个字符串连接为一个字符串。
*,乘号表示重复连接,连接多次。
print('1001'+'0100')print('我Hi华仔啦!'*3)
字符串的索引和切片。使用下标来进行索引和切片。
字符串是一种特殊的序列类型,序列是一种数据结构(后面会提到),它具有部分的序列一般方法,索引和切片就是其中之一。在Python中,下标都是从0开始的,递增地依次往后地推。习惯了C++数组的操作看着很顺眼,相比于R和matlab中的索引从1开始,还有点不习惯。
Python的字符串支持从后开始索引,使用中括号[]索引,-1表示最后一个字符,递减地依次向前推。切片包括前面,不包括后面,是一个“左闭右开的区间”。索引是可以指定步长的,默认为1,如果步长为-1,表示从后到前索引,默认是从前往后的索引顺序。如果省略第一个索引位置,那么默认是从第一个字符开始,同样地,如果省略了最后一个索引位置,那么一直索引到最后一个字符。
a='hello world'print(a[0],a[1],a[-1],a[-2],sep='\t')print(a[0:3],a[:0],a[1:5],a[2:],a[:-4:-1],a[-1:-4],sep='\t')
# print('这是单行注释!')'''这是多行注释内容!Do I make it clear?'''
好了,本期就聊到这里了,下期见。