转自(http://www.coolpython.net/python_primary/basic_grammar/indent.html

数据类型

数字

python支持3中数值类型

  1. 整型(int),通常称之为整型或整数,这个概念与我们小学时学过的整数是相同的,python3的整数没有大小限制
  2. 浮点型(float), 浮点型数据由整数部分和小数部分组成
  3. 复数(complex),由实数部分和虚数部分构成,编程中几乎用不到

    数据类型

    现在,请你打开交互式解释器,跟随我的代码,来学习和理解int与float
    1. Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 26 2018, 19:50:54)
    2. [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>> 3
    5. 3
    6. >>> 5.5
    7. 5.5
    8. >>> type(3)
    9. <class 'int'>
    10. >>> type(5.5)
    11. <class 'float'>
    12. >>>
    在交互式解释器中,会默认使用print函数输出你所输入的数据。我在示例中分别输入了一个int数据和一个float数据,并分别用type函数来查看他们的类型。
    了解数据类型是至关重要的,原因在于不同的数据类型有不同的用处,他们拥有不同的能力,type函数专门用来查看一个数据的类型,今后,你会经常用到这个函数。

    类型转换

    在编程时,我们经常对数据的类型进行转换,比如,我们会把一个float类型转换成int类型数据以满足我们特定的操作要求,也存在将int类型数据转成float类型的情况,在交互式解释器里进行下面的操作
    1. >>> float(33)
    2. 33.0
    3. >>> int(22.34)
    4. 22
    这一篇文章里,你又学习到了两个内置函数,int() 与 float(),后面还会学习更多的类型转换函数。

手动计算进制转换

1.1 二进制转十进制

以1101010为例,讲解如何转成十进制数值
1101010 = 12 + 12 + 02 + 12 + 02 + 12 + 0*2 = 64 + 32 + 8 + 4 = 106
python中二进制的数值以0b开头

  1. print(0b1101010) # 106

1.2 八进制转十进制

如果你已经理解了二进制如何转成十进制,那么八进制转成十进制也就变得简单了,以八进制125为例
125 = 18 + 28 + 5*8 = 64 + 16 + 5 = 85
在python中,八进制的数值使用0o开头

  1. 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开头

  1. print(0x3f2a1) # 258721

使用函数进行进制转换

2.1 二进制,八进制,十六进制转成十进制

  1. value = int('1101010', 2)
  2. print(value) # 106
  3. value = int('125', 8)
  4. print(value) # 85
  5. value = int('3f2a1', 16)
  6. print(value) # 258721

使用int函数可以将二进制,八进制,十六进制的数值转成十进制数值,而且字符串的开头可以不携带进制的标识,如果你喜欢使用,也可以写成 int(‘0x3f2a1’, 16)

2.2 十进制转成二进制,八进制,十六进制

十进制转二进制使用bin()函数, 十进制转八进制使用oct()函数, 十进制转十六进制使用hex()函数

  1. print(bin(106)) # 0b1101010 十进制转二进制
  2. print(oct(85)) # 0o125 十进制转八进制
  3. print(hex(258721)) # 0x3f2a1 十进制转十六进制

2.3 八进制,十六进制转二进制

并没有函数可以实现直接将八进制或十六进制数转成二进制,因此需要借用int()函数先将八进制的数转成十进制,然后使用bin()函数将十进制数转成二进制

  1. print(bin(int('125', 8))) # 八进制转二进制
  2. print(bin(int('0x3f2a1', 16))) # 十六进制转二进制

2.4 二进制转八进制,十六进制

二进制转八进制可以使用oct函数直接转换,而二进制转十六进制则需要借助int函数

  1. print(oct(0b1101010)) # 二进制转八进制
  2. print(hex(int('1101010', 2))) # 二进制转十六进制

2.5 八进制与十六进制互相转换

十六进制转八进制,可以直接使用oct函数,而八进制转十六进制则需要借助int函数

  1. print(oct(0x3f2a1)) # 十六进制转八进制
  2. print(hex(int('125', 8))) # 八进制转十六进制

最强大的莫过于oct函数,可以将其他三个进制的数值直接转成八进制。

bool数据类型

bool数据类型只有两个值,分别是True,False。
在交互式解释器中跟随我的代码进行操作

  1. >>> 4 > 3
  2. True
  3. >>> 4 > 6
  4. False
  5. >>> type(True)
  6. <class 'bool'>

4 大于 3 ,显而易见,因此4 > 3 是正确的,其结果就是True, 4 > 6 显然是错误的,因此结果是False。
通过type函数可以查看到,True和False的类型是bool。

类型转换

目前,你已经学习了int,float, bool 这3个数据类型,他们之间可以互相转换,在交互式解释器里跟随我进行操作

  1. >>> bool(1)
  2. True
  3. >>> bool(0)
  4. False
  5. >>> int(True)
  6. 1
  7. >>> int(False)
  8. 0
  9. >>> float(True)
  10. 1.0
  11. >>> float(False)
  12. 0.0

这里有一个小的技巧需要你记住,在使用内置函数bool做数据类型转换时,bool(0),bool(0.0)的结果是False,此外都是True,显然,0被视为了与假,错相同概念的事物。

变量命名规范

  1. 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
  2. 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
  3. 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print, sum
  4. 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好