初识Python
计算机基础
计算机的组成:
输入输出设备、存储器、主板、CPU、硬盘、内存、显示器、电源、显卡。
CPU:中央处理器 Central Processing Unit 处理各种数据 相当于人的大脑
内存:储存数据 临时数据 断电丢失
硬盘:存储数据的 断电不丢失
什么是操作系统:
控制计算机的工作流程
什么是应用程序:
安装在操作系统之上的软件
总结:CPU~人的大脑、内存~人的临时记忆、硬盘~人的永久记忆、操作系统~控制计算机硬件工作的流程、应用程序~安装在系统之上的软件。
Python简介
1989年诞生,作者龟叔
领域:云计算、web开发、人工智能、系统运维、爬虫、金融。
python 2 和python 3 区别:
python 2 源码不统一(c、java都有)重复代码
python 3 源码统一 无重复代码
Python是什么编程语言:
解释型语言,
编译型:开发效率慢,运行速度快。
解释型:开发效率块,运行速度慢。
Python种类:
Cpython、Jpython、IronPython、PyPy
现在从官网下载的就是cpython,现在主流使用Cpython。
• Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件) 转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
• Jython
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
• IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
• PyPy(特殊)
Python实现的Python,将Python的字节码字节码再编译成机器码。
python的字节码是pyc,会消失(编译时第一次会编译代码,第二次就直接使用pyc,不去编译代码了),上图中虚拟机在python中指的是python的解释器,虚拟机在Java中指jvm(Java写的代码在jvm中运行)。
变量:
a=1 #声明变量
a #变量的名字
= #赋值
1 #值
什么是变量?
变量在程序中会频繁使用。
常量:
常量就是不变的量,常量不建议修改。
其实没有常量,但是认为自定义字母全部大写为常量(有下划线也算)。
例:ID = 11012013014066
变量命名规则:
1. 变量由数字,字母,下划线组成(不能加空格): a a_1 a1
2. 不能以数字开头
3. 不能使用python中的关键字(写的时候变蓝了)
4. 不能使用中文和拼音
5. 区分大小写
6. 变量名要具有描述性
7. 推荐写法:
- 驼峰体(大峰、小峰):Ageofoldboy = 98
- 下划线 age_of_old_boy = 98 (官方推荐)
变量的小高级
age = 18
age1 = 19
age2 = age # age2 = 18
age = 20
print(age,age1,age2) #打印多个值用逗号隔开
# 结果:20 19 18
a = 4
b = a + 6 #在声明变量的时候先执行等号右边的内容
print(b)
#结果:10
注:在声明变量的时候先执行等号右边的代码
注:变量赋值从右往左执行
注释
单行注释(当行注释) : #用井号在前面即可,不能换行,在行首添加一个#该行就会被注释,编译时会跳过,不去编译这一行.
多行注释:第一种 """ """ 第二种 ''' '''(三个双引号或者三个单引号就是多行注释)特别说明:开头的三个引号一定要顶格写,要不无效
"""
我请您吃
蒸羊羔
蒸熊掌
蒸鹿尾儿
烧花鸭
烧雏鸡
烧子鹅
"""
引号的使用:
三个单引号也可做多行字符串使用,一个print输出时就是多行字符串,而不是一行.
而单引号和双引号一个print只能输出一行,而且每一行后必须加才行
后面的符号和每一行前面的双引号是回车后自动添加,自己手动添加会报错
双引号同上,一个print只能打一行,除非加。
注:开头的" ' 必须顶格写,前面不能有空格,结尾的" ' 可以在任意位置。
数据类型初识
整形、数字、字符串、汉子、列表、布尔值、对错
"字符串"
'字符串'
"""字符串"""
"I'am boy" (双引号内可以包含单引号)
a='alex'
b='wusir'
print(a+b) = alexwusir (字符串拼接)注:只能和同类型(字符串)相加可以相乘(只能和数字相乘),但是不能相减
a='坚强'
print(a*8) 字符串相乘 注意:只能和数字相乘
## 布尔值(就是对和错)
true false
1 0
用户交互(input)
输入 输出
input(“提示语句”)
type 类型
str 字符串
int 整形
bool 布尔值
1.数字(整型):用于计算和比较(int)integer。
2.字符串:在python中只要是用引号引起来的就是字符串(str)string。(单引双引三引都有)
加法--两种都是字符串才能相加。
乘法--只能和数字进行相乘。
#加法
a="黑大个"
b="白小个"
print(a+b)
输出: 黑大个白小个
#乘法
a="黑大个"
print(a*2)
输出: 黑大个黑大个
'''my name's "meet"''' 引号配合使用
'''为引号,具体内容为:my name's "meet"
3.布尔值:返回真假值,用于判断(bool)
True 真 (true首字母必须大写)
False 假 (fasle首字母必须大写)
输入
注意:
l input获取到的内容全都是字符串(str)
l int() -- 将字符串中的数字转换成整型
l type() -- 查看数据类型
int("5") 将字符串5转换成整型
str(5) 将整型转换成字符串
a="黑大个"
print(type(a))
输出: <class 'str'> (类型为字符串)
a="23"
print(type(a))
输出: <class 'str'> (类型为字符串)
a="23"
a=int(a)
print(type(a))
输出: <class 'int'> (类型为整型或数字)
and的用法: and前后的内容都得为真时条件才能通过
user = input("请输入账号:")
pwd = input("请输入密码:")
if pwd == "alexdsb" and user == "alex":
print("alex就是一个dsb")
else:
print("密码或账户错误!")
注意: == 用来判断前后是否相等,=是用来赋值。
list tuple list(tuple)
tuple list tuple(list)
str list 字符转列表 split
name = "alex" print(name.split())
list str# lst = ["1","2","3"] 列表转字符用join
print(''.join(lst))
dict -- str 字典转字符串 str()
dic = {"1":2}
print(str(dic),type(str(dic)))
print(dict("{1:1}")) 字符串转字典
set - list 集合转列表 list(set)
list - set 列表转集合 set(list)
列表转成元组 : tuple(list)
元组转成列表: list(tuple)
字符串转成列表: list("abcd")→[a,b,c,d]
"abc".split()→['abc']
列表转成字符串: b="".join(lst)
字典转成字符串: str(dic) (字典的格式不变,类型变了)
字符串转成字典: a="{1:2,3:4}" print(eval(a))
集合转成列表: a=set("bcdef") list(a)
列表转成集合: a=['s','d','f'] set(a)
流程控制语句
if 如果
单if:
if 关键字 空格 条件 冒号 缩进 结果。
if 嵌套
if 条件:
结果
if 条件:
结果
if条件:
结果
**if**
表示:如果。在python中是关键字。
if True 如果是真的,告诉大家这是真的
1.单if
格式:
如果 空格 条件 冒号
缩进 结果
2.if else (必须二选一)
格式:
如果 空格 条件 冒号
缩进 结果
否则 冒号
缩进 结果
```python
n = input("请输入数字:")
if 3<int(n):
print(1)
else:
print(2)
print(6)
```
3.if elif elif (多选一或零)
格式
如果 空格 条件 冒号
缩进 结果
再如果 空格 条件 冒号
缩进 结果
再如果 空格 条件 冒号
缩进 结果
```python
print(110)
if 3<2: # 如果
print("A")
elif 3>8: # 再如果
print("B")
elif 5<0:
print("C")
print(112)
#输出 110 112
```
4.if elif else (多选一)
格式
如果 空格 条件 冒号
缩进 结果
再如果 空格 条件 冒号
缩进 结果
否则 空格 条件 冒号
缩进 结果
```python
if 3 == 2:
print(1)
elif 3<2:
print(3)
elif 3>10:
print(4)
else:
print(9)
#输出 9
```
5.if if if (多选)
格式:
如果 空格 条件 冒号
缩进 结果
如果 空格 条件 冒号
缩进 结果
如果 空格 条件 冒号
缩进 结果
```python
if 3>2:
print("A")
print(456)
if 3<6:
print("B")
# 输出 A 456 B
```
6.if 嵌套
格式:
如果 空格 条件 冒号
缩进 如果 空格 条件 冒号
缩进 结果
伸出 否则 冒号
缩进 结果
伸出 伸出 否则 冒号
缩进 结果
```python
sex = "女"
age = 35
if sex == "女":
if age == 35:
print("进来坐一坐")
else:
print("你去隔壁找春生")
else:
print("你去对门找alex")
```
while循环
跟if有点像
基本结构:
**while** 条件 :
缩进 循环体
还有个for else 当for执行完了,才会跳到else上
```python
if 条件:
结果
while 条件:
循环体
while True:
print("痒")
print("鸡你太美")
print("卡路里")
print("好运来")
print("小三")
print("小白脸")
print("趁早")
print("过火")
```
下面这几个歌名会一直重复循环,不会停止,成为死循环.
总结:
打断循环的方式:
1.修改条件
2.break
- continue --跳出当前循环继续下次循环(将continue伪装成循环体中的最后一个行代码)
- break -- 打破当前循环 (终止当前循环)
continue和break的相同之处:他们以下的代码都不执行
```python
while else
while True:
print(111)
break
else:
print(222)
输出 111
```
字符串格式化(三种 %s %d f { } )
第一种表示方式:
```python
a = "------------- info -------------"
b = "name:"
c = "age:"
d = "job:"
e = "-------------- end -------------"
name = input("name")
age = input("age")
job = input("job")
print(a + "
" + b + name + "
" + c + age + "
"+ d + job + "
" +e)
```
输出: 通过字符串加字符串的方式,把name和alex加一起,加 用来换行.
输出结果
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814225909690-1521499591.png)
第二种:%s
```python
a = """ ------------- info -------------
name:%s
age:%s
job:%s
-------------- end -------------
"""
name = input("name")
age = int(input("age"))
job = input("job")
print(a%(name,age,job))
```
输出:
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814230005694-1329355788.png)
a变量中的%s是占位用的,而print中的%是用来补位的,补位顺序要和变量a中的一致,不能多,也不能少.
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814230125248-460922536.png)
```python
num = input('学习进度:')
b = "大哥黑的学习进度为:%s%%"
print(b %(num))
```
输出:
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814230356716-1627442170.png)
b中的%%为意译,不是表示什么功能而是仅仅表示一个%,会显示在结果中,如果在%%前加空格,输出的数字在%前也会有空格.
第三种: f"{ }"
用f " { } "的方式,{}中是需要填的,把他空出来,双引号也可换成单引号
注:只能在python3.6版本以上才可使用.
```python
e = input("今天天气如何:")
s= f"今天是什么天气啊:{e}"
print(s)
输出:
```
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814230542300-921208021.png)
```python
s = f"今天下雨了,你心情如何:{input('心情如何:')}"
print(s)
输出:
```
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814230712462-306111634.png)
```python
e = "晴朗"
d = "阴天"
f = "刮风"
s= f"今天是什么天气啊:{e}或者{f}又或者是{d}"
print(s)
输出:
```
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814230927029-2052433003.png)
```python
s = f"{1}{2}{3}"
print(s)
输出:
```
![](https://img2018.cnblogs.com/blog/1730011/201908/1730011-20190814231019597-1351039823.png)
总结:
- %s 是占的字符串类型的位置(现在%s用的还是少)
- %d(%i和d一样)是占的数字类型的位置
- %% 转换成普通的%号
- 按照位置顺序传递,占位和补位必须要一一对应.
运算符:
算术运算符:
加(+),减(-),乘(*),除(/),整除(//)除完取整数,幂/次方(**)
模(%)除完取余数.
其中除(/)在python2中是除完取整数,,在python3中除完会出现小数.
比较运算符:
大于 > , 小于 < , 等于 == , 不等于 != , 大于等于 >= , 小于等于 <= .
赋值运算符:
= 赋值
+= 自加 a = a + 1 等于 a += 1
-= 自减
*=自乘
/=自除
//=自整除
**=自幂
%=自取余
逻辑运算符:
and (与/和)
or (或)
not (非)
成员运算符:
in 存在
not in 不存在
总结:
and前后都为真时取后面的值
and前后都为假时取前面的值
and前后一真一假时取假的值
or 前后都为真时取前面的值
or 前后都为假时取后面的值
or 前后一真一假时取真的值
pass或...表示占位,有些程序需要后期补充完整,就先用pass或...占位
or从左往右第一个为真就是他,不看别的了
and从左往右第一个为假就是他,不看别的了
运算优先级为: () > not > and >or
从左向右的顺序执行
not True就等于是False
s = "abcde" for x in s : pass print(x) # 输出为e if 后并没有输出,只有pass占位 print(9 and 1 or not False and 8 or 0 and 7 and False) 输出为 1 print(3 and 4) print(0 and 4) print(0 and False) 输出为 4 0 0
s = "alexdsb" if "sb" not in s: print(True) else: print(False) 输出结果为False
编码初始 (编码集)密码本
今 0101 天 0110 晚 0010 上 0001 去 1001 便 1000 利 0100 店 1111
ASCII (美)不支持中文, 用于pyhton2版本
gbk (国标) 英文用8位 中文16位
unicode (万国码) 英文16位 中文32位
utf-8 (可变长编码)英文8位 欧洲文16位 亚洲24位
linux -- utf-8
mac-- utf-8
windows--gbk
单位转换:
1字节=8位 (1Bytes = 8 bits)
1024Bytes =1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB (常用到TB就够了)
1024TB=1PB
1024PB=1EB
类
class A: company_name = '老男孩教育' # 静态变量(静态字段) __iphone = '1353333xxxx' # 私有静态变量(私有静态字段) def __init__(self,name,age): #特殊方法 self.name = name #对象属性(普通字段) self.__age = age # 私有对象属性(私有普通字段) def func1(self): # 普通方法(实例方法) pass def __func(self): #私有方法 print(666) @classmethod # 类方法 def class_func(cls): """ 定义类方法,至少有一个cls参数 """ print('类方法') @staticmethod #静态方法 def static_func(): """ 定义静态方法 ,无默认参数""" print('静态方法') @property # 属性 def prop(self): pass