一、数字和表达式python
什么是表达式,1+2*3 就是一个表达式,这里的加号和乘号叫作运算符,一、二、3叫作操做数。1+2*3 通过计算后获得的结果是7,就1+2*3 = 7。咱们能够将计算结果保存在一个变量里,ret = 1-2*3 。 因此表达式就是由操做数和运算符组成的一句代码或语句,表达式能够求值,能够放在“=”的右边,用来给变量赋值。linux
计算运算符号:+、-、*、/、%、**程序员
赋值运算符: = 、+= -= *= /= %= //= **=函数
比较运算符:>、 <、 >=、 <=、 ==、!=优化
逻辑运算符: not 、and、 or编码
逻辑运算符是用来作逻辑计算的。像咱们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的获得一个为True或False的值。而逻辑运算符的的操做数就是一个用来作条件判断的表达式或者变量。spa
成员运算符: not in 、in (判断某个单词里是否是有某个字母)操作系统
成员运算符用来判断一个元素是不是另外一个元素的成员。 好比说咱们能够判断 “hello” 中是否有 “h”, 获得的结果也是True 或者 False。 设计
身份运算符: is、is not3d
这里咱们首先将123456赋值给a,后有将a赋值给b, 这样实际上是 a和b 的值都是123456, 可是后面d的值也是123456,为何 第一次a is b 的结果为True ,d和 a 的结果为False 呢?
缘由是这样的: 咱们知道程序是运行在内存里的,第一次 咱们将123456赋值给a的时候,实际上是在内存里开辟了一块空间,将123456放在这块空间里,为了找到这里的123456, 会有一个指向这块空间的地址,这个地址叫作内存地址,是123456存储在内存中的地址。a其实指向的就是存储123456的内存空间的地址。执行了b=a,就是让b指向的地址和a同样。以后咱们执行了 d = 123456 ,这里就会再开辟一块内存空间,并将指向该空间的内存地址赋值给d ,这样的话 ,a和b 指向的是同一个123456, d 指向的是另一个123456 。
位运算符:
先了解一个概念:
咱们平时用到的数字在计算机中是以二进制表示的, 这个二进制数叫作这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.
好比:十进制中的数 +7 ,计算机字长为8位,转换成二进制就是00000111。若是是 -7 ,就是 10000111 。那么,这里的 00000111 和 10000111 就是机器数。
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其他位表示值. 好比若是是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 由于第一位是符号位, 因此8位二进制数的取值范围就是:
11111111 到 01111111 即 -127 到 127
反码的表示方法是:
正数的反码是其自己
负数的反码是在其原码的基础上, 符号位不变,其他各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
补码的表示方法是:
正数的补码就是其自己
负数的补码是在其原码的基础上, 符号位不变, 其他各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
咱们设置a=234 (二进制为 11101010), b=44 (二进制为 101100)
& 按位与运算符:参与运算的两个值,若是两个相应位都为1,则该位的结果为1,不然为0
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^ 按位异或运算符:当两对应的二进位相异时,结果为1
~ 按位取反运算符:对数据的每一个二进制位取反,即把1变为0,把0变为1
a = 10000000 = 128
~a
result: 01111111 = 127
<< 左移动运算符:运算数的各二进位所有左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
a = 10110011 = 179
a << 2
result: 1011001100
>> 右移动运算符:把">>"左边的运算数的各二进位所有右移若干位,">>"右边的数指定移动的位数
a = 10110011 = 179
a >> 2
result: 00101100 = 44
位运算符通常用于二进制操做,通常用于底层,咱们不多用,知道就能够了。
二、八进制和十六进制
在Python中,十六进制数应该像下面这样书写:
八进制数应该这样书写:
三、变量
变量(variable)是另一个须要熟知的概念。Python中的变量很好理解。变量基本上就是表明(或者引用)某值得名字。举例来讲,若是但愿用名字x表明5,只须要执行下面的语句便可:
这样的操做称为赋值(assignment),数值5被赋给了变量x。另一个说法就是:将变量x绑定到了值(或者对象)5上面。在变量被赋值以后,就能够在表达式中使用变量。
变量的命名规则:
变量名只能是 字母、数字或下划线的任意组合;
变量名的第一个字符不能是数字;
变量是区分大小写的;
约定俗成的一些规则,变量名称应该有意义、不要用中文作变量名、不要使用拼音;
关键字不能声明为变量名。
四、注释
程序很长的时候,不弄明白代码就不知道代码是什么的,这个时候怎么办?
咱们看书的时候,有不懂的地方,咱们通常都会标注一下。
咱们写程序也同样,我在代码旁边标注一下是否是就很方便了。
注释有两种方式:
单行注释 #
多行注释 """ 内容"""
做用:
避免本身忘了写的代码是作什么的;
写给人看的;
不要去注释你代码作了什么,而要去 注释 个人代码为什要这么作。
Linux/Unix用户须要注意的内容:
特殊的注释:
在某些Python文件中咱们会看到文件的第一行是
#!/usr/bin/env python
这一行是一个特殊的注释,他有特殊的做用,被称为Shebang,通常在linux/Unix中出现。
Shebang是一个由 “#” 和 “!” 构成的字符串行(#!),她出如今文件的第一行。当文件中出现Shebang 时,Linux/Unix 操做系统的的程序载入器会分析Shebang的内容,将以后的内容做为解释器命令,并调用该执行,将载有Shebang的文件路径做为解释器的参数。
在这里 #! 先用于帮助内核找到Python解释器,可是在导入模块的时候将会被忽略,所以,只有在直接执行的文件才有必要加入#! 。
五、字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)。ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其余西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,因此,ASCII码最多只能表示 255 个符号。
关于中文
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。如今的PC平台必须支持GB18030,对嵌入式产品暂不做要求。因此手机、MP3通常只支持GB2312。
从ASCII、GB23十二、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中老是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文能够统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB23十二、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码仍是GBK,能够经过GB18030升级包升级到GB18030。不过GB18030相对GBK增长的字符,普通人是很难用到的,一般咱们仍是用GBK指代中文Windows内码。
显然ASCII码没法将世界上的各类文字和符号所有表示,因此,就须要新出一种能够表明全部字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他再也不使用最少使用2个字节,而是将全部的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
因此,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),若是是以下代码的话:
报错:ascii码没法表示中文
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
六、获取用户输入
在编写程序的时候,并不须要知道变量的具体指。固然,解释器最终仍是得知道变量的值。但是,它怎么能知道这个值呢?解释器只知道咱们告诉它的内容。
事实上,咱们经过编写程序让别人用,咱们没法预测用户会给程序提供什么值。那么,看看很是有用的input函数吧。
七、Python类型转换
函数 描述
int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 建立一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
例如:若是要将2个输入的变量相乘,必须进行类型转换。
八、流程控制之if语句
咱们知道了如何获取用户输入,如今要写一个猜数字的游戏,咱们想一下,首先咱们的程序运行起来,而后让用户输入数字,以后程序判断用户输入的数字是否正确,并返回判断结果。
这里就须要用到if语句来进行判断。if语句的结构是:
if 判断条件: 执行语句…… var = input("Enter:") if var == "A": print("True")
注意:
缩进——推荐四个空格 (使用2个、3个空格或者tab都是能够得)
不要tab与空格混用
不一样软件对空格的显示逻辑老是同样的,可是对于tab却五花八门。
有的软件把Tab展开成空格,有的不会展开。有的Tab宽度是4,有的宽度是8,
这些不一致会使得代码混乱,尤为是靠缩进表示块结构的Python。
咱们继续编写咱们的猜数字游戏。
前面咱们写的猜数字游戏,只有在用户输入正确的时候,才会有提示,那输入错误的时候,是否是也应该提示?
这里就须要用到if-else语句
if语句 if 判断条件: 执行语句…… else: 执行语句……
if 语句的流程图
if语句共有三种结构
九、流程控制之while循环
如今有一个需求,要求从1到10,打印10个数字,能够用如下方法实现:
Python要实现循环功能,代码就是按照上述的方法来写。
嵌套循环
若是我想实现这个功能,在控制台上打印10行数字,每行有5列,分别是1,2,3,4,5,该如何实现呢?
实现代码以下:
输出结果以下:
break语句
咱们换个须要,上述打印10行5列数字中,我想在打印第3行数字后,就退出循环,该若是实现呢?
实现代码以下:
输出结果以下:
这里要使用break语句,break语句会终端当前循环。
continue语句
如今,在10行5列的数字矩阵里,我只想打印1,2,3,5列,该如何实现呢?
输出结果以下:
这里要使用continue语句,continue语句的做用是退出当前循环,继续执行下次循环。