1. 什么是数据类型?
我们知道编程就是编写程序解决某个问题,而任何能使用编程来解决的问题都是能够提取或者转换出相应的数据,只是数据的表达形式是不一样的,而这表达形式就是数据类型。
比如,数学中的数字我们都知道有整数、小数,虽然它们都是数字,但是类型是不一样的。
所以,这一章将先介绍Python中简单的两种数据类型”字符串和数字“,后续章节将会另外介绍其他复杂的数据类型。
2. 字符串
2.1 字符串是什么?
我们从字面上理解的话,字符串就是一串字符组成的数据。在Python中,我们通常是用双引号或者单引号将一串字符括起来,那么这个在Python中就是表示字符串。
比如:
"I Love Python!"
或者
'I Love Python!'
2.2 字符串的注意事项
上面说了,字符串是用单引号或者双引号括起来,那么看下下面这段程序是对的还是错的?
message = 'Python is Gavin's favorite language!' print(message)
另存为lesson3_1.py,然后我们运行下这段程序,你会看到报错了,报错内容如下:
File "lesson3_1.py", line 1 message = 'Python is Gavin's favorite language!' ^ SyntaxError: invalid syntax
这是因为,这串字符中有一个单引号,这个单引号会干扰到Python的判断,使其无法准确获取整个字符串。这时候大家肯定会想到用双引号,如下代码:
message = "Python is Gavin's favorite language!" print(message)
除了用双引号,我们其实还可以利用 \' 来输出单引号,如下:
message = 'Python is Gavin\'s favorite language!' print(message)
当然,这种简单的语法错误,通常Python编辑软件(比如笔者常用的Sublime Text)都会使用语法突出来表示错误。
2.3 字符串的基本操作
2.3.1 字符串的序号(标号)
首先,我们知道字符串可以赋值给一个变量,比如
str = "abcdefg"
那么其结构其实是一个字符组,且每个字符都有正着数和反着数的序号,如下所示
正着数的序号 0 1 2 3 4 5 6
a b c d e f g
反着数的序号 -7 -6 -5 -4 -3 -2 -1
2.3.2 字符串的截断
那么我们可以试下如下程序:
str = "abcdefg" print(str) print(str[0]) print(str[-1]) print(str[0:-1]) print(str[1:3]) print(str[2:])
运行下程序,得到如下的输出结果:
abcdefg a g abcdef bc cdefg
第一个输出我们已经知道了是直接输出整个字符串。
第二个print(str[0]),就是输出序号是0的字符。
第三个print(str[-1]),输出反过来的序号-1的字符,也就是正着的最后一个。
第四个print(str[0:-1]),输出字符串序号0到-1(但不包括-1)的所有字符。
第五个print(str[1:3]),输出字符串序号1到3(不包括3)的所有字符。
最后一个print(str[2:]),输出字符串序号2及2之后的所有字符。
那么,讲到这里,大家可以自己亲手写写试试,输出字符串的不同截断结果。
2.3.3 字符串的特殊操作
首先,我们先看下下面这段代码:
message = "My favorite language is " + "Python" print(message) message = "My favorite language is " message = message + "Python" print(message) message = "Python" print(message * 2) message = "Python" message = message * 2 print(message)
另存为lesson3_3.py,然后命令行执行 python3.7 lesson3_3.py,输出如下:
My favorite language is Python My favorite language is Python PythonPython PythonPython
我们看到代码中有”+“号,这个在字符串中表示的是连接符,它可以将两个字符串连接起来生成一个新的字符串,而”*“号,表示的是复制,”*“后面的数字表示复制几次。那么,我们就能看到上述的输出了。
另外,这里还要介绍下两个常用的转义字符,一个是"\n",还有一个是"\t",其中"\n"表示的是换行,"\t"表示的是制表符(缩进)。
还有,如果字符串前面加上字母r,则表示原始的字符串。
我们看下这段代码:
message = "My favorite language is\nPython" print(message) message = "\tMy favorite language is Python" print(message) message = r"My favorite language is\nPython" print(message)
输出结果如下:
My favorite language is Python My favorite language is Python My favorite language is\nPython
第一个输出的字符串被分成两行,这个就是"\n"的作用。
第二个输出前面有制表符缩进了,这个是"\t"的作用。
第三个的字符串前面有个r,则输出的是原始字符串,其中的"\n"没有起到换行作用,而是直接一块输出。
3. 数字
3.1 数字类型介绍
在Python3中只有以下三种数字类型:
- 整数类型 int,表示的是长整型数,没有像Python2中用Long表示长整型;
- 浮点数 float,也就是我们常说的带有小数的数字;
- 布尔型 bool, 也就是True 和 Flase;
- 复数 complex,如1+2j。
我们可以使用type()这个函数来获取变量的类型
比如
n = 20 f = 2.2 print(type(n)) print(type(f))
输出的内容是:
<class 'int'> <class 'float'>
同时要注意的是,通过给变量赋值也给变量指向了对应的数据类型,同时还可以同时给不同变量赋不同类型的值,比如:
n, f, b = 20, 2.2, True
就分别给n、f、b赋值,且类型分别是int、float和bool。
3.2 数值运算
跟数学中的运算一样,这里的数字可以进行加减乘除基本运算,也可以进行求余、乘方、特殊除法等等。
我们看下下面这些数值运算和其结果输出:
>>> print(2 + 3) 5 >>> print(3 - 2) 1 >>> print(2 * 3) 6 >>> print(3 / 2) 1.5 >>> print(3//2) 1 >>> print(7%3) 1 >>> print(1+2.0) 3.0 >>> print(2**3) 8
通过上述输出我们可知:
- 整型和浮点型混合运算结果都是浮点型的;
- 单个/表示正常除法,而//表示除后取整;
- %表示求余,比如7%2,7除以2得到的是3剩下1不能被除尽(余1),所以7%2就等于1;
- 连续两个*,表示的是乘方
3.3 数字间的类型转换
不同类型的数字之间是可以互相强制转换的,主要如下:
- int(x) 将x转换为整数。
- float(x) 将x转换为浮点数。
- complex(x) 将x转换为一个复数,实数部分为 x,虚数部分为 0。
- complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。
例如:
print(int(3.14)) print(float(100)) print(complex(5)) print(complex(5, 6))
则输出为:
3 100.0 (5+0j) (5+6j)
3.4 数字转字符串
数字和字符串属于两种完全不同的类型,在具体编程使用时是不能直接把它们拼接起来使用的。
比如:
age = 30 message = "I am " print(message + age)
上面代码运行的时候是会报错的,报错如下:
File "lesson3_7.py", line 3, in <module> print(message + age) TypeError: can only concatenate str (not "int") to str
意思是类型错误,那么要怎么修改呢?我们就要引入转字符串的类型转换函数str(),使用如下:
age = 30 message = "I am " print(message + str(age))
运行正确输出:
I am 30
本章介绍到这,学习的同时记得要在计算机上敲一敲哦,不要只是眼动而手不动。
后续章节将不间断更新!
前方有只程序猿:大家好,我是一只会写代码的IT猿,希望能与大家共同探讨,共同进步!欢迎关注我!
谢谢~