python    命令行模式启动python交互模式

exit()       命令行模式退出python交互模式

python 交互模式:输入命令,立即解释输出结果

            命令行模式:运行文件,python  .py

python文件直接在文本编辑器写代码,没有头文件的存在,导入文件倒是可以有的

输入,输出 input()      print()  ——》 a=input("请输入数字:")       print('字符串','逗号','分隔','空格')   input()print()是在命令行下面最基本的输入和输出

Python使用缩进来组织代码块,遵守习惯使用4个空格的缩进。每一行是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块注释以#开头,可以是任意内容,解释器会忽略掉注释。Tab(制表符,用于对其字符),空格(可见字符)

Python程序是大小写敏感的

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1100-80800,等等。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff000xa5b4c3d2,等等。1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。python对整数和浮点数没有大小限制。

字符串是以单引号'或双引号"括起来的任意文本,比如'abc'"xyz"等等。请注意,''""本身只是一种表示方式,不是字符串的一部分,

如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:'I\'m \"OK\"!'。\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\

Python允许用'''字符串分行写所见即所得'''的格式表示多行内容   两边都是三个单引号

print('''line1                                line1  

line2 输出 line2
   line3''')  line3

r‘字符串’ 或者 r"字符串" 会在 r'''字符串'''  r写在字符串前面的作用都是提示字符串内所有字符直接显示,不再转义了。如: r'我\\\\们'  输出 我\\\\们   否则 '我\\\\们'  输出 我\\们

print(r'''Hello,\n                                                    Hello,\n

world''')                                             输出           world

在Python中,可以直接用TrueFalse表示布尔值(请注意大小写)   例如,print(3>2)   输出  True。布尔值可以用andornot运算。True and True , False or False , not True。

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头。在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言。

在Python中,通常用全部大写的变量名表示常量,例如PI = 3.14159265359,但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI的值,也没人能拦住你。

最后解释一下整数的除法为什么也是精确的。在Python中,有两种除法,一种除法是/,/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

>>> 10 / 3
3.3333333333333335
>>> 9 / 3
3.0

还有一种除法是//,称为地板除,两个整数的除法仍然是整数:

>>> 10 // 3
3

你没有看错,整数的地板除//永远是整数,即使除不尽。要做精确的除法,使用/就可以。因为//除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

>>> 10 % 3
1

无论整数做//除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

字符串和编码

通用,在操作系统中的叫法。编码的名称与类型:

ASCII编码是1个字节,而Unicode编码通常是2个字节,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

现在计算机系统通用的字符编码工作方式:

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

保存到硬盘或者传输的时候,需要文件小一些,所以转换成UTF-8.

在python内部,使用unicode编码的叫做str类型,使用ascii编码或者utf-8编码的叫做bytes类型。注意区分python的类型与具体编码类型的区别,不要混为一谈,编码是编码,类型是类型,一个是底层的,一个是表层的。bytes只是一个类型,具体底层使用哪种编码格式需要具体指定。

由于Python的字符串类型str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes类型。转换为bytes后的每个字符都只占用一个字节。

   python对bytes类型的数据用带b前缀的单引号或双引号表示:

x = b'ABC'

str类型的字符串转换为相应的bytes类型的字符串:以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

>>> 'ABC'.encode('ascii')                     (实际上英文使用的是ASCII编码)     或者  'ABC'.encode('utf-8')      utf-8等同于UTF-8(一下都是)
b'ABC'                                          一样的结果,因为在ASCII编码中和utf-8编码中,一个英文字母都占用一个字节
>>> '中文'.encode('utf-8')                    (实际上中文使用的是utf-8编码,一个汉字占用3个字节) 不能使用ASCII编码因为超出了ASCII规定的编码范围。
b'\xe4\xb8\xad\xe6\x96\x87'                     bytes有6个字符,占用6个字节

bytes变为str,就需要用decode()方法

>>> b'ABC'.decode('ascii')                       b'ABC'.decode('utf-8')  结果一样
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')          用什么加锁就用什么解锁喽~
'中文'

bytes转为str时候,如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

在操作字符串时,我们经常遇到strbytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对strbytes进行转换。英文中文都使用utf-8,encode(),decode()的选择。

把文本编辑器设置为utf-8without BOM格式保证了python源代码保存时是utf-8编码,在源文件前添加两行注释保证了读取时是utf-8编码:

由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码。

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

如果知道字符的整数编码,还可以用十六进制这么写str

>>> '\u4e2d\u6587'
'中文'

要计算str包含多少个字符,可以用len()函数:

>>> len('ABC')
3
>>> len('中文')
2

len()函数计算的是str的字符数,如果换成byteslen()函数就计算字节数:

>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
在Python中,采用的格式化方式和C语言是一致的,用%实现,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
print('hi,%s'%'李梅') 红色%前面的是要输出的内容,里面的%s、\%d、%..的是占位符,用于替换的值位于红色%号的后面

    'hi,%s,你有%d元'%('李梅',7000) 多个值的话,红色百分号后面的值用括号括起来,顺序对应就好。

常见的占位符有:

占位符替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。

其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
print('%4.2f' % 13.1415926)

输出

3-01 
3.14 
13.14 

format()

另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……,不过这种方式写起来比%要麻烦得多:

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'

小结

Python 3的字符串使用Unicode,直接支持多语言。

strbytes互相转换时,需要指定编码。最常用的编码是UTF-8。Python当然也支持其他编码方式,比如把Unicode编码成GB2312

>>> '中文'.encode('gb2312')
b'\xd6\xd0\xce\xc4'

但这种方式纯属自找麻烦,如果没有特殊业务要求,请牢记仅使用UTF-8编码。