转自(http://www.coolpython.net/python_primary/basic_grammar/indent.html)
数据类型
数字
python支持3中数值类型
- 整型(int),通常称之为整型或整数,这个概念与我们小学时学过的整数是相同的,python3的整数没有大小限制
- 浮点型(float), 浮点型数据由整数部分和小数部分组成
- 复数(complex),由实数部分和虚数部分构成,编程中几乎用不到
数据类型
现在,请你打开交互式解释器,跟随我的代码,来学习和理解int与float
在交互式解释器中,会默认使用print函数输出你所输入的数据。我在示例中分别输入了一个int数据和一个float数据,并分别用type函数来查看他们的类型。Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 26 2018, 19:50:54)[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 33>>> 5.55.5>>> type(3)<class 'int'>>>> type(5.5)<class 'float'>>>>
了解数据类型是至关重要的,原因在于不同的数据类型有不同的用处,他们拥有不同的能力,type函数专门用来查看一个数据的类型,今后,你会经常用到这个函数。类型转换
在编程时,我们经常对数据的类型进行转换,比如,我们会把一个float类型转换成int类型数据以满足我们特定的操作要求,也存在将int类型数据转成float类型的情况,在交互式解释器里进行下面的操作
这一篇文章里,你又学习到了两个内置函数,int() 与 float(),后面还会学习更多的类型转换函数。>>> float(33)33.0>>> int(22.34)22
手动计算进制转换
1.1 二进制转十进制
以1101010为例,讲解如何转成十进制数值
1101010 = 12 + 12 + 02 + 12 + 02 + 12 + 0*2 = 64 + 32 + 8 + 4 = 106
python中二进制的数值以0b开头
print(0b1101010) # 106
1.2 八进制转十进制
如果你已经理解了二进制如何转成十进制,那么八进制转成十进制也就变得简单了,以八进制125为例
125 = 18 + 28 + 5*8 = 64 + 16 + 5 = 85
在python中,八进制的数值使用0o开头
print(0o125) # 85
1.3 十六进制转十进制
十六进制稍稍比八进制麻烦一点,十六进制是逢16进1,因此单个位上的数值会超过9, 超过9的部分依次使用a, b, c, d, e, f, 分别代表10, 11, 12, 13, 14, 15。
以十六进制3f2a1为例
3f2a1 = 316 + 1516 + 216 + 1016 + 1*16 = 196608 + 61440 + 512 + 160 + 1 = 258721
python中十六进制的数值以0x开头
print(0x3f2a1) # 258721
使用函数进行进制转换
2.1 二进制,八进制,十六进制转成十进制
value = int('1101010', 2)print(value) # 106value = int('125', 8)print(value) # 85value = int('3f2a1', 16)print(value) # 258721
使用int函数可以将二进制,八进制,十六进制的数值转成十进制数值,而且字符串的开头可以不携带进制的标识,如果你喜欢使用,也可以写成 int(‘0x3f2a1’, 16)
2.2 十进制转成二进制,八进制,十六进制
十进制转二进制使用bin()函数, 十进制转八进制使用oct()函数, 十进制转十六进制使用hex()函数
print(bin(106)) # 0b1101010 十进制转二进制print(oct(85)) # 0o125 十进制转八进制print(hex(258721)) # 0x3f2a1 十进制转十六进制
2.3 八进制,十六进制转二进制
并没有函数可以实现直接将八进制或十六进制数转成二进制,因此需要借用int()函数先将八进制的数转成十进制,然后使用bin()函数将十进制数转成二进制
print(bin(int('125', 8))) # 八进制转二进制print(bin(int('0x3f2a1', 16))) # 十六进制转二进制
2.4 二进制转八进制,十六进制
二进制转八进制可以使用oct函数直接转换,而二进制转十六进制则需要借助int函数
print(oct(0b1101010)) # 二进制转八进制print(hex(int('1101010', 2))) # 二进制转十六进制
2.5 八进制与十六进制互相转换
十六进制转八进制,可以直接使用oct函数,而八进制转十六进制则需要借助int函数
print(oct(0x3f2a1)) # 十六进制转八进制print(hex(int('125', 8))) # 八进制转十六进制
最强大的莫过于oct函数,可以将其他三个进制的数值直接转成八进制。
bool数据类型
bool数据类型只有两个值,分别是True,False。
在交互式解释器中跟随我的代码进行操作
>>> 4 > 3True>>> 4 > 6False>>> type(True)<class 'bool'>
4 大于 3 ,显而易见,因此4 > 3 是正确的,其结果就是True, 4 > 6 显然是错误的,因此结果是False。
通过type函数可以查看到,True和False的类型是bool。
类型转换
目前,你已经学习了int,float, bool 这3个数据类型,他们之间可以互相转换,在交互式解释器里跟随我进行操作
>>> bool(1)True>>> bool(0)False>>> int(True)1>>> int(False)0>>> float(True)1.0>>> float(False)0.0
这里有一个小的技巧需要你记住,在使用内置函数bool做数据类型转换时,bool(0),bool(0.0)的结果是False,此外都是True,显然,0被视为了与假,错相同概念的事物。
变量命名规范
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
- 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print, sum
- 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好
