再讲新知识之前,先将一些之前没提的东西再介绍一下:
(1)
命令行模式
在Windows开始菜单选择“命令提示符”(或者是在搜索栏中输入“cmd”),就进入到命令行模式,它的提示符类似C:\>
:
Python交互模式
在命令行模式下敲命令python
,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>
。
在Python交互模式下输入exit()
并回车,就退出了Python交互模式,并回到命令行模式:
也可以直接通过开始菜单选择Python (command line)
菜单项,直接进入Python交互模式,但是输入exit()
后窗口会直接关闭,不会回到命令行模式
在命令行模式下,可以执行python
进入Python交互式环境,也可以执行python hello.py
运行一个.py
文件。
执行一个.py
文件只能在命令行模式执行。如果敲一个命令python hello.py,就会出现bug,错误提示No such file or directory说明这个hello.py在当前目录找不到,必须先把当前目录切换到hello.py所在的目录下,才能正常执行:此外,在命令行模式运行.py文件和在Python交互式环境下直接运行Python代码有所不同。Python交互式环境会把每一行Python代码的结果自动打印出来,但是,直接运行Python代码却不会。
(2)绝对不能用Word和Windows自带的记事本,选择Notepad++免费试用有中文界面。
安装好文本编辑器后,输入以下代码:
print('hello, world')
注意print
前面不要有任何空格。然后,选择一个目录,例如C:\chaochao
,把文件保存为hello.py
,就可以打开命令行窗口,把当前目录切换到hello.py
所在目录,就可以运行这个程序了:(此外,文件名只能是英文字母、数字和下划线的组合。)
C:\chaochao>python hello.py
hello, world
(3)以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
(4)
#
:
>>> print(r'''hello,\nword''')
hello,\nword
这个情况比较特殊,还是要注意的
1.一些常用的算术运算符的简写:
加减乘除都可以这样操作:
>>> a=8
>>> a+=3
>>> a
11
>>> a-=4 #表示减法运算
>>> a
7
>>> a*=5 #表示乘法运算
>>> a
35
>>> a/=7
>>> a
5.0
python的除法跟C++的语法规则是不一样的(答案返回的时候是浮点数)
打开IDLE自己来操作一波,看是不是这个情况
>>> 10//8
1
>>> 3.0//2.0
1.0
这是取整数的
>>> 5%2
1
上面的是取余运算
>>> 3**2
9
这是求幂运算,很简便
>>> -3*2+5/2
-3.5
混合运算的时候要根据优先级(先乘除后加减,当然这是在没有括号的情况下的)
>>> -3**2
-9
>>> -(3**2)
-9
>>> 3**(-2)
0.1111111111111111
这里 需要注意的是:幂运算的左边的优先级高于右边
而逻辑运算符and,or,not的用法跟别的语言还是一样的(运算的时候都是相当于利用bool变量来进行操作)
>>> (2<3)and(3>7)
False
>>> not (4<6)
False
>>> (1<8)or(34>98)
True
and操作符:全真则真,一假则假
or操作符:一真则真,全假才假
not操作符:取对立的运算结果
2.我们学会了1输出函数print(),那与之对应的输入函数呢?
Python提供了一个input()
,可以让用户输入字符串,并存放到一个变量里
>>> name = input()
chaochao
当你输入name = input()
并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。输入完成后,不会有任何提示,Python交互式命令行又回到>>>
状态了。那我们刚才输入的内容到哪去了?答案是存放到name
变量里了。可以直接输入name
查看变量内容:
>>> name
'chaochao'
要打印出name
变量的内容,除了直接写name
然后按回车外,还可以用print()
函数:
>>> print(name)
chaochao
input()
可以让你显示一个字符串来提示用户,因此我们可以添加一些语句来提醒用户输入名字:
>>> name = input("请输入您的名字")
请输入您的名字
>>> name = input("please enter your name:")
please enter your name:Mark
>>> print('Hello',name)
Hello Mark
***
注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648
-2147483647
。
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)
3.字符串和编码
字符编码:最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312
编码,用来把中文编进去,Unicode把所有语言都统一到一套编码里
现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A
用ASCII编码是十进制的65
,二进制的01000001
;
字符0
用ASCII编码是十进制的48
,二进制的00110000
,注意字符'0'
和整数0
是不同的;
汉字中
已经超出了ASCII编码的范围,用Unicode编码是十进制的20013
,二进制的01001110 00101101
。
你可以猜测,如果把ASCII编码的A
用Unicode编码,只需要在前面补0就可以,因此,A
的Unicode编码是00000000 01000001
。
新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8
编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间,ASCII编码实际上可以被看成是UTF-8编码的一部分
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:所以你看到很多网页的源码上会有类似<meta charset="UTF-8" />
的信息,表示该网页正是用的UTF-8编码
python的字符串:
对于单个字符的编码,Python提供了ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(34567)
'蜇'
如果知道字符的整数编码,还可以用十六进制这么写str
:
>>> '\u4e2d\u6587'
'中文'
>>> '中文'
'中文'
由于Python的字符串类型是str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
好吧,今天就这么多啦!没说完的下一次再说,谢谢大家!