一、Python介绍
-为了能让程序员减少开发成本。
二、Python和其他语言对比
-c:机器码
-其他高级语言:字节码-机器码
三、Python的种类
-Cpython:先给代码->c语言直接转成字节码->在转成机器码(一行一行执行)
-pypy:拿到代码->c语言直接转成字节码-再转成机器码 全部转换完成->再去执行
-其他Python:代码->转化成自己语言的字节码->机器码
四、Python基础
Python规则:学习一门语言,实际上就是学习他的规则。
1.安装:Python解释器
2.写程序(在D:python201720170423目录下新建1.txt,并写 print('hello world'),这样就写完了一个程序,把他交给Python解释器进行编译。如下cmd中执行语句)
C:Userszhaichao.DS>D: oolspythonpython.exe D:python2017201704231.txt
#a.打开文件,读取文件内容
#b.读取之后,进行词法和语法分析,分析一下我们写的语法是不是人家的规则
#c.转换成字节码,然后在转成机器码进行运行。
还有一种形式就是,不写文件名,如:C:Userszhaichao.DS>D: oolspythonpython.exe cmd执行以下,给一行,就解释一行。
这两种方式都是什么时候用呢?我们写的程序一般都是用第一种方式执行。而第二种更多的用于自己调试,一些功能性的代码,一次性调试。
3.解释器两种执行方式
Window:
1)C:Userszhaichao.DS>D: oolspythonpython.exe D:python2017201704231.txt(文件解析)
2)C:Userszhaichao.DS>D: oolspythonpython.exe(单行解析)
Linux:
1)C:Userszhaichao.DS>D: oolspythonpython.exe D:python2017201704231.txt(文件解析)
2)C:Userszhaichao.DS>D: oolspythonpython.exe(单行解析)
3)除了以上两种,还有个特殊的文件头部细信息:
#!/usr/bin/python 这个必须写在最顶部,/usr/bin/python这是Linux中解释器的路径
写完之后,给这个文件一个可执行的权限,chmod 755 1.py。执行 ./1.py ,他会自动根据头部解释器的路径找到解释器,执行代码。跟shell差不多。
五、编码
asicc-unicode-utf-8- gb2312-gbk
-*- coding:utf-8 -*-
六、pycharm
使用:
1、 new project
2、 new 创建文件夹
3、 new py文件
4、 在py文件中右键,run xx.py
注意:1、设置编码
2、设置模板
3、设置大小
注意:使用pycharm的坑
七.运算符
算数运算
比较运算
注意执行顺序:当比较运算中有and和or,其执行顺序为:and与or没有优先级,含or的运算符,如果or前面的成立,后面的不管成不成立都不用看了。Or两个中只要有一个成立就好了。
#1==1为true,但是后面为or,那么后面就不用看了 if 1 ==1 or 1 > 2 and 1==4: print('正确') else: print('错误')
如果是含and的运算符,and前面的如果是错误的,那后面的也不需要看了。但是如果and前面的是正确的,那么还得继续做比较。因为后面是true还是false会影响整个条件,只要and前面遇到false的条件,后面的就不用看了,整体为false。or前面遇到true的,后面的也不需要看了,整体为true。切记:没有优先级,一个一个往后看。
赋值运算
逻辑运算
注意:如果是你自己定义的条件,含and或者or的,你可以通过加上括号来决定条件判定的优先级。
成员运算
In在什么时候用呢?
Content =”Alex 是个好人”
If “好人” in content:
Print(‘包含敏感字符’)
Else:
Print(content)
In多用在判断某个元素是否包含在其他元素中。与其相反的为not in
八、数据类型
-整数(包括了长整型,已经没有长整型了)
-创建一个数字
a=123
a=int(123)
-转换
age=”19”
new_age=int(age)
怎么验证我输入的变量是什么类型呢?
如:
a=123
print(type(a))
-布尔值
-创建
True
False
-转换
bool()表示把某个值转换成布尔类型
例: v = bool(-5)
print(v)
在数字里面,转换成布尔类型的时候,数字转换的时候只有0是false,其他的都是 true
字符串可以转成布尔类型的么?
对于字符串,只有””是false,其他是true
-字符串
-创建字符串
A=”alex”
A=str(‘alex’)
-转换
Age=19
New_age = str(age)
-字符串的拼接
第一种拼接:
name='alex'
gender = '女'
new_str = name + gender
print(new_str)
第二种拼接:
S%表示占位符,临时占位,方便以后修改,字符串格式化
name='我叫李杰,性别:%s, 我今年%s岁'
new_str = name %('男',19)
print(new_str)
占位符是有严格的顺序的。%s的s代表的是字符串;后面的年龄%s也可以写成%d,d代表的是数字
占位符还可以这样写:
name='我叫李杰,性别:%s, 我今年%s岁' %('男',19)
print(name)
为什么非要做类型转换呢?因为只有是同一种类型的时候,比较起来才有意义。
字符串的其他功能:
移除空白:
注意:val = “ alex ”
表示换行符。Strip也可以移除换行
分割字符串
长度:
注意:在Python3里面汉字和字母在一起,求长度都按字符算
例:
Val=”李杰sb”
V= len(val)
Print(v)
结果为4
索引:
Val = “李杰sb”
V= val[4]
Print(v)
索引的位置从0开始
切片:
---列表
创建:
a = ['alex','狗','eric',123]
a = list(['alex','狗','eric',123])
in判断:
if 'al' in a:
pass
if 'al' in a[0]:
pass
索引:
val = a[0]
长度:
val = len(a)
切片:
a = ['alex','狗','eric',123]
v = a[0::2]
print(v)
追加:
a = ['alex','狗','eric',123]
a.append('xxoo')
print(a)
插入:
a = ['alex','狗','eric',123]
a.insert(0,'牛')
print(a)
删除:
a = ['alex','eric','狗','eric',123]
# a.remove('eric')
del a[0]
print(a)
更新:
a = ['alex','eric','狗','eric',123]
a[1] = '阿斯顿发送到'
print(a)
For循环:
a = ['alex','eric','狗','eric',123]
for item in a:
print(item)
# break
# continue
字典操作:
创建字典:
V= {
‘name’:’alex’,
‘password’:’123123’
}
注意:字典是无序的
#常用操作
如果v是一个用户信息,我是不是可以获取当前用户的用户名
n=v[‘name’] 根据key获取value
print(n)
#如果没有age,就是增加;如果有,就是修改
v[‘age’]=19
print(v)
#删除
del v[‘name’]
print(v)
字典是否可以进行for循环
# 循环
# for item in v.keys():
# print(item)
# for item in v.values():
# print(item)
# for key,val in v.items():
# print(key,val)
print(len(user_dict))
嵌套:字典和列表之间相互嵌套
列表里面可以嵌套列表,可以无限嵌套