一、编程与编程语言
python是一门编程语言,搞明白三点:
1、编程目的?
计算机的发展就是为解放人力,机器是死的,所以人必须找到一种能够被机器识别的表达式从而把自己的思想按照这个表达方式传递机器,完成机器可以自发的工作。
2、什么是编程语言?
上面所说的表达方式指的就是编程语言
英语 | python |
---|---|
单词 | 关键字 |
语法 | 语法 |
作文 | 程序 |
3、什么编程?
按照某种编程语言的语法风格写程序,程序在未执行前就是一堆普通文件。
二、编程语言的分类:
1. 机器语言
机器语言,故名就是站在机器的角度能够识别的语言。对于机器来说,它是通过电压的高低变化来工作的,而电压分为高电压和低电压,高电压为1,低电压为0 ,所以机器语言就是有0和1组成的代码。 优点:执行效率最快 缺点:开发效率低,学习难度大
2. 汇编语言
汇编语言是通过把0、1组成的代码串封装成一个个指令,人可以通过这些指令直接操作机器硬件,相对于机器语言来说,汇编语言是比较容易被人接受的。 优点:执行效率较高级语言快,但没有机器语言快 缺点:开发效力低,学习难度大
3. 高级语言
高级语言,是站在人的立场上来说的,通过人的思维方式来进行语言的组织形成的语言,最接近于人对语言的理解和掌握。高级语言有很多,如:python、Java、C、C 、C#、Go...... 高级语言又分为编译型语言和解释型语言: 编译型: 代码在执行前需要通过编译器,将所有要执行的代码文件进行编译,待编译成功完成之后,才能执行代码。 如:C、C 、Java... 这种语言的执行速度较解释型语言快,但是开发调试的效率较低 解释型: 解释型语言编写的代码在执行的过程中,编译器一行一行的读取代码,每读取一行就执行一行。 如:python、php、go... 这种语言的执行速度较编译型语言慢,由于其便于调试,使得开发的效率较高。
三、写程序的两种方式:
1. 交互式
代码语言:javascript复制直接在命令行(Linux下shell、Windows下cmd)输入python 进行交互式编写,方便调试,但是代码不能保存。
2. 文件方式
代码语言:javascript复制将代码写进文件里,就像是编辑普通的文件,然后执行python C:test.pyhon即可执行
四、变量:
什么是变量?
代码语言:javascript复制变指的是“变化”,量指的是反映某种状态
如何定义变量?
代码语言:javascript复制定义一个变量:
name = "huazai"
解释:
name:即变量名称
= :语法规则,即赋值符号
huazai: 变量的值
变量名的命令规则?
代码语言:javascript复制#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3. 关键字不能声明为变量名[
定义变量方式:
1.驼峰式
2.下划线
五:常量
代码语言:javascript复制 常量通常全部用大写字母,不应该去改变的量。
AGE_OF_OLDBOY=54
六 执行过程
代码语言:javascript复制 python3 C:test.py
1、先启动python3.exe
2、把C:test.py从硬盘读入内存
3、解释执行文件内容(识别python语法)
七、引用计数 垃圾回收机制
代码语言:javascript复制在python中,自带有垃圾回收机制,原理就是当一块内存空间的引用计数为0的时候,python就会自动将这个内存空间释放,即垃圾内存回收,这个回收是定时完成的,并非引用计数为0,内存即被回收。
x='aaa' #'aaa'这个值的引用计数为1
y=x #'aaa'这个值的引用计数为2
八、产生一个变量的三要素
代码语言:javascript复制 name='huazai'
变量值:用来表示状态
用变量名取变量值
print(name)
变量值的类型:表示不同的状态应该用不同类型的值去表示(数字:年龄,字符串:名字)
print(type(name))
变量值的id号:
print(id(name))
判断值是否相等:==
判断id是否相等:is
九、程序与用户交互
代码语言:javascript复制 user=input('') #把用户输入的内容存成字符串
十、基本运算
python的基本运算包括有算数运算、比较运算、赋值运算、逻辑运算、身份运算。
算数运算
代码语言:javascript复制算数运算就是基本的加、减、乘、除、乘方、求余等
符号 | 意义 |
---|---|
| 加 |
- | 减 |
* | 乘 |
/ | 除 |
// | 除后取整 |
% | 求余 |
** | 幂 |
示例:
>>> a = 2;b=5
>>> a b
7
>>> a - b
-3
>>> a * b
10
>>> b/a
2
>>> b//a
2
>>> b%a
1
>>> b**a
25
比较运算
代码语言:javascript复制比较运算就是两个值之间进行大小比较,比较结果正确为True,错误为False
符号 | 意义 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
<> | 不等于 |
示例:
>>> a = 2;b=5
>>> a>b
False
>>> a<b
True
>>> a==b
False
>>> a!=b
True
>>> a>=b
False
>>> a<=b
True
>>> a<>b
True
赋值运算
代码语言:javascript复制对一个变量进行复制计算
符号 | 意义 |
---|---|
= | 赋值 |
= | 加后赋值 |
-= | 减后赋值 |
×= | 乘后赋值 |
/= | 除后赋值 |
%= | 求余后赋值 |
**= | 幂后赋值 |
//= | 取整后赋值 |
示例:
>>> a=2
>>> a =1
>>> a
3
>>> a-=1
>>> a
2
>>> a*=2
>>> a
4
>>> a/=2
>>> a
2
>>> a%=3
>>> a
2
>>> a**=2
>>> a
4
>>> a//=3
>>> a
1
逻辑运算
代码语言:javascript复制逻辑运算分为三种:或、与、非
逻辑运算的结果为布尔值:True、False
在逻辑运算中:
符号 | 意义 |
---|---|
and | 与:当and左右两侧的结果都是True的时候,结果为True |
or | 或:当or左右两侧的结果有一个为True时,结果为True |
not | 对结果取反 |
示例:
>>> a = 2 ;b = 5
>>> a < b and b > 3
True
>>> a < b and b > 6
False
>>> a < b or b > 6
True
>>> not a < b or b > 6
False
>>> not a < b or b < 6
True
身份运算
代码语言:javascript复制== 对值进行比较
is 对id进行比较
示例:
>>> a = 123456789
>>> b = 123456789
>>> a == b
True
>>> a is b
False
>>> id(a)
8846240
>>> id(b)
8846252
十一、流程控制(重要)
流程控制对于程序来说至关重要,有了流程控制,机器可以像人一样对发生的事情进行判断,可以在一定的条件下重复相同的动作。流程控制让机器能够更加智能化。
if...else
代码语言:javascript复制# 根据输入的成绩,输出该成绩所在的等级
#!/usr/bin/env python
#_*_coding:utf-8_*_
score = input("请输入你的分数:")
score = int(score)
if score > 90:
print("优秀")
elif score > 80:
print("良好")
elif score > 60:
print("及格")
else:
print("不及格")
while循环
在实际情况中,我们不仅要让机器对一些情况做一次判断,当某个值在不停发生变化的时候,我们需要机器判断出当这个值在符合某中条件下,一直去重复某种动作,这时候就需要while循环来处理。
例如:上例中可以让用户在程序不退出的情况下多次查询,只有用户输入'q'时,程序才退出
代码语言:javascript复制#!/usr/bin/env python
#_*_coding:utf-8_*_
while True:
score = input("请输入你的分数:")
if score == "q":
break
else:
score = int(score)
if score > 90:
print("优秀")
elif score > 80:
print("良好")
elif score > 60:
print("及格")
else:
print("不及格")
结果演示:
C:UsersAdministratorPycharmProjectsPY20venv1Scriptspython.exe C:/Users/Administrator/PycharmProjects/PY20/day1/流程控制.py
请输入你的分数:34
不及格
请输入你的分数:78
及格
请输入你的分数:89
良好
请输入你的分数:96
优秀
请输入你的分数:q
Process finished with exit code 0
练习题
基础需求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序
示例代码:
代码语言:javascript复制#!/usr/bin/env python
#_*_coding:utf-8_*_
name = "huazai"
pwd = "123456"
count = 1
while True:
if count > 3:
print("too more times faild,exit.")
break
user = input("name>>>:")
passwd = input("password>>:")
if user == name and passwd == pwd:
print("welcome to login ")
break
else:
print("name or password error")
count =1
升级需求:
- 可以支持多个用户登录 (提示,通过列表存多个账户信息)
- 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
示例代码:
代码语言:javascript复制#!/usr/bin/env python
#_*_coding:utf-8_*_
import time
user_list = [
["huazai","123456"],
["egon","123"],
["alex","1234"]
]
count = 0
lock_file="lock_user.txt"
tag = True
while tag:
if count < 3:
user = input("name>>>:")
passwd = input("password>>:")
L = [user, passwd]
with open(lock_file,'r') as file:
for line in file.readlines():
if L[0] in line:
print("%s is locked,请联系管理员" %L[0])
tag = False
if L in user_list:
print("welcome to login.")
break
else:
print("name or password is error")
else:
print("too more times faild,exit.")
f = open("lock_user.txt", "w")
data = L[0] " is lock"
print(type(data))
f.write(data)
f.close()
break
count =1