Python基础——数据类型与基本运算【主要为除法】
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ
无论是Python 3.x版本还是2.x版本,Python均支持多种数据类型,能够直接处理的数据类型包括Int类型、Float类型、String类型、布尔值、变量、常量……
在计算机内部,Python可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
Int整数类型
令人惊喜的是,Python可以处理任意位数的整数,同时包括负整数。因此,Python处理整数非常方便,几乎与数学表示整数的方式一模一样。
Python也同时支持十六进制和八进制。十六进制数表示形式如下:
1 #十六进制表示形式 2 >>>0xAD 3 173 4 >>>0xad 5 173 6 >>>0XAD 7 173
对于八进制,Python 3.x版本必须以“0o”前缀(数字0 + 字母o),八进制表示形式如下:
1 #八进制表示形式 2 >>>0o20 3 16 4 #字母o大写也编译通过,最好小写,避免造成歧义 5 >>>0O20 6 16
注:计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x
前缀和0-9,a-f表示,例如:0xff00
,0xa5b4c3d2
等等。
Float浮点型
我们都知道,数学中除了整数外,还有小数。而数学中的小数,Python中称之为浮点数。比如1.23,0.03,10.12……这些都是基本的浮点数。
浮点数的表现形式主要有三种:
一、直接显示
1.23,0.98,0.0000000008……对于小数位有很多零的情况,这样书写很不友好。
二、xx.xx * 10xx
1.23 * 109和12.3 * 108是完全相等的。如果是负数,0.000123则写成1.23 * 10-4。
三、xx.xxexx(字母e,e后直接输入xx,并非上标)
1.23x109就是1.23e9。如果是负数,0.0000123可以写成1.23e-5。
特别地,整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
String字符串
Python数据类型中,字符串是最常见的又是最难的。关于字符串,我稍后会专门写一篇文章来详细总结字符串的各种知识点。这里就简单介绍一下字符串的用法。
字符串是以单引号'
或双引号"
括起来的任意文本,比如'abc',"xyz"
等等。请注意,''
或""
本身只是一种表示方式,不是字符串的一部分。那么,问题来啦。
1.如果字符串本身包含单引号,怎么办?
可以用双引号“”括起来。用单引号会出错,因为括起来的引号必须成对出现。
#字符串本身含有单引号,请用双引号括起来 >>>"I'am fine!" "I'am fine!"
2.如果字符串本身含有双引号,怎么办?
很简单,用单引号括起来呗!
3.如果字符串本身既包括双引号又包括单引号呢?
这里就涉及到转义字符啦。可以用转义字符 \ 来标识。
1 #字符串使用转义字符\ 2 #直接输出字符串与print()差异 3 >>>'I\'m \"fine\"!' 4 'I\'m "fine"!' 5 >>>a = 'I\'m \"fine\"!' 6 >>>a 7 'I\'am "fine"!' 8 >>>print(a) 9 I'am "fine"!
注:\n表示换行,\t表示制表符,\\表示\等等。
代码示例如下:
1 #特殊字符表现形式 2 >>>print('I\'am learning\nPython') 3 I'am learning 4 Python 5 >>>print('\\\n\\') 6 \ 7 \
4.转义字符 \ 并非万能钥匙
其实,使用转义字符 \ 并不是万能的,有时会比较麻烦。当然啦,Python已经为您想在前面,可以使用r' '(‘ ’内部的字符串不转义)。
1 #r' '不转义 2 >>>print('\\\n\\') 3 \ 4 \ 5 >>>print(r'\\\n\\') 6 \\\n\\
5.多行
如果字符串内部有很多换行,用\n
写在一行里不好阅读,为了简化,Python允许用'''...'''
的格式表示多行内容。
1 #字符串内部很多行,可以使用‘‘‘...’’’ 2 >>> print('''apple 3 ... banana 4 ... orange''') 5 apple 6 banana 7 orange
注意:上面是在交互式命令行内输入,注意在输入多行内容时,提示符由>>>
变为...
,提示你可以接着上一行输入,注意...
是提示符,不是代码的一部分。当输入完结束符```
和括号)
后,执行该语句并最终打印结果。
布尔值
布尔值与布尔表达式的表示完全一致。一个布尔值只有True、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来:
布尔值何时为假,何时又为真?
下面的值作为布尔表达式的时候,会被解释器看做False:
False、None、0、0.0、“”、()、[]、{}
1 #标准值False和None、所有类型的数字0、 2 #空序列(空字符串、元组、列表)以及空字典都为假 3 #其他一切都被解释为真!!! 4 #代码展示布尔值为False的情况 5 >>>bool(False) 6 False 7 #整数 8 >>>bool(0) 9 False 10 #浮点数 11 >>>bool(0.0) 12 False 13 #字符串(单引号和双引号) 14 >>>bool('') 15 False 16 >>>bool("") 17 False 18 #空列表 19 >>>bool([]) 20 False 21 #空元组 22 >>>bool(()) 23 False 24 #空字典 25 >>>bool({}) 26 False
布尔值可以用and、or
和not
运算。
and
运算是与运算,or
运算是或运算,not
运算是非运算。
特别地,请读者想想为什么???最好在评论区展示想法,谢谢!
1 #Why??? 2 >>>3 and 6 3 6 4 >>>3 and 1 5 1 6 >>>7 or 4 7 7 8 >>>4 or 7 9 4
None(空值)
空值是Python里一个特殊的值,用None
表示。None
不能理解为0
,因为0
是有意义的,而None
是一个特殊的空值。此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型。
变量
变量的命名规则与其它编程语言类似,但在python中定义变量时无须声明类型。
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java,c,c++等等。
在Python中,等号=
是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
对变量赋值x = y
是把变量x
指向真正的对象,该对象是变量y
所指向的。随后对变量y
的赋值不影响变量x
的指向。
示例代码如下:
1 #Python变量赋值 2 >>>a = 12 #变量a为Int型 3 >>>pring(a) 4 12 5 >>>a = 'ABC' #变量a为字符串 6 >>>print(a) 7 ABC
Python中,变量时时刻刻会被用到。因此,必须牢记Python是一种动态语言!!!
常量
说到常量,您最先想到什么?我想应该是π吧,山巅一寺一壶酒……哈哈~~~
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量。
1 #常量之约定俗成 2 >>>PI = 3.1415926
但事实上PI
仍然是一个变量,Python根本没有任何机制保证PI
不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI
的值,也没人能拦住你。
因此,约定俗成的东西,大家一定要遵守,不能坏了规矩。
基本运算【主要为除法】
在Python中,基本运算包括加减乘除、Bool运算等。那为什么主要讲除法呢?因为它比较复杂呗。
除法有三种,一种除法为 / ;另外一种为 //,还有一种为取余% 。
一、除法为 /
计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数。
#除法为 / >>>2 / 3 0.6666666666666666 >>>10 / 3 3.3333333333333335 >>>10 / 5 2.0
二、除法为 //
// 称之为地板除,两个整数的除法仍然是整数。
1 #//为地板除 2 >>>10 // 3 3 3
注:在python中//
除等同于c语言中的/
除。
你没有看错,整数的地板除//
永远是整数,即使除不尽。要做精确的除法,使用/
就可以。
三、取余%
取余% 得到两个整数相除的余数。
#取余% >>>10 % 3 1
终上所述,无论整数做//
除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。
至于其它基本运算,它们没有什么特殊之处,与数学中的内容几乎相同。
在Python中,整数和浮点数均没有大小限制。
然而,某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648
-2147483647
。
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)。