一、编程与编程语言
编程的目的:
计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到计算机能够像人脑一样自动执行的效果
什么是编程语言
能够被计算机所识别的表达方式就是编程语言,语言是沟通的介质,而编程预言家就是人与计算机沟通的介质。在编程的世界里,计算机更像人的奴隶,人类的编程的目的就是命令奴隶去工作什么是编程
编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含了一堆字符的文件#强调:程序在未运行前跟普通文件无异,只有在程序运行时,文件内所有的字符才有特定的语法意义
二、编程语言的分类
编程语言的发展:
# 机器语言 直接用二进制面向计算机硬件编程 # 汇编语言 简写的英文标签取代二进制编程,本质仍是面向硬件 # 高级语言 用人类的语言编写程序,需要被操作系统翻译成二进制后,才能被执行
高级语言分类
# 编译型:需要编译器,相当于谷歌翻译 如C C++ # 解释型:需要解释器,相当于同声传译 如PHP Python Java总结
# 机器语言 执行效率最高 开发效率最低 # 汇编语言 执行效率最高 开发效率最低 # 高级语言 # 编译型 执行效率高,开发效率低,一个小的修改都需要从新编译 # 解释型 执行效率低,依赖解释器运行 开发效率高 跨平台性高
三、Python入门
运行Python程序的两种方式
# 交互式 不能永久保存代码,多用于调试 # python first.py 将代码永久保存到文件中#强调:python解释器执行程序是解释执行,即打开文件读内容,因此文件的后缀名没有硬性限制,但通常定义为.py结尾
运行一个python程序的三个过程(Python first.py)
# 1、启动python解释器 # 2、python解释器将first.py文件内容当做普通字符读取到内存中,此过程不会涉及到python语法概念 # 3、解释器解释first.py的代码,识别python语法,返回结果四、变量与常量
什么是变量
# 即变化的量,核心关键字变和量# 量 记录某种状态
# 变 记录的状态是经常变化的
为什么要有变量
# 程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以需要有一种机制能够反映或者说保存下来程序执行时的状态# 比如:
初始等级为1,打怪升级后变为10
定义变量
# age=18
# 变量名 指向值所在的内存空间 # 赋值符号 =:将值与变量名绑定在一起 # 变量值 内存空间变量的规范
# 1、变量名只能是字母、数字或下划线的任意组合 # 2、变量名的第一个字符不能是数字或下划线 # 3、python的关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is','lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
#强调:变量名最好见名知意
定义方式
#驼峰体 AgeOfLichunke=26 #下划线(推荐使用) age_of_Lichunke=26定义变量不好的方式
#1、变量名为中文、拼音 #2、变量名过长 #3、变量名词不达意定义一个变量包含三个特征
# 1、 id 变量值的内存地址号,用来反映变量值在内存中的位置 # 2、type 值的数据类型 # 3、valve 值>>> age=18
>>> print(id(age),type(age),age)
491574592 <class 'int'> 18变量的比较运算
# is 判断id是否相同 # == 判断值是否相同强调:
id相同,值一定相同 #指向同一内存空间
id不同,值可能相同
>>> info1='lichunke,18,9you'
>>> info2='lichunke,18,9you'
>>> id(info1)
89286032
>>> id(info2)
89286080常量
# 常量即指不变的量 或在程序运行过程中不会改变的量# Python中没有专门语法代表常量,程序员约定俗成用变量名全为大写代表常量
AGE_OF_FRED=18
五、用户与程序交互
# Python3 input >>> input('please input your name: ') please input your name: fred 'fred'#强调:input会把用户所有的输入都存成str类型
>>> username=input('please input your name: ')
please input your name: fred
>>> type(username)
<class 'str'>
>>> username=input('please input your name: ')
please input your name: 123
>>> type(username)
<class 'str'>#Python2 input && raw_input
#:input用户输入什么类型,就存成什么类型
>>> username=input('please input your name: ')
please input your name: 123
>>> type(username)
<type 'int'>#raw_input相当于Python3的input
>>> username=raw_input('please input your name: ')
please input your name: 123
>>> type(username)
<type 'str'>
六、代码注释
# 注释符号 单行注释: #此处是注释 多行注释: ''' 此处是注释 '''#注意: 1、不用全部注释,自己觉得需要解释的地方加 2、注释可以用中文或英文,但不要用拼音 #文件头注释: #!/usr/bin/env python # -*- coding: utf-8 -*-
七、格式化输出
# 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式 例如: >>> username=input('please input your name: ') please input your name: fred >>> userage=input('please input your age: ') please input your age: 18 >>> print('my name is %s my age is %s ' %(username,userage)) my name is fred my age is 18#这里用到了占位符%s 可接收字符串,也可接收数字# 占位符还有%d 只能接收数字类型>>> userage=input('please input your age: ')
please input your age: fred
>>> print('my age is %d' %userage)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str # %d只能接收数字类型#注意:
#如果需要需要传多个值, 用此格式 print('my name is %s my age is %s ' %(username,userage))
# 练习
name='Fred'
age=26
sex='male'
job='sa'
print('-'*10+'info of Fred'+'-'*10+' '+'Name: %s ' %name+'Age: %d ' %age+'Sex: %s ' %sex+'Job: %s' %job)----------info of Fred----------
Name: Fred
Age: 26
Sex: male
Job: sa八、基本运算符
1、算数运算
# Python解释器可以当成计算器使用:+ 相加
- 相减
* 相乘
/ 相除
% 取模 返回除法的余数
** 幂 x的y次幂
// 去整除 返回商的整数部分
2、比较运算
# 常用于判断== 等于 比较两个对象是否相等 != 不等于 比较两个对象是否不相等 ==取反 <> 不等于 类似于!= > 大于 < 小于>= 大于等于<= 小于等于
3、赋值运算
# 赋值
= 简单赋值运算符
+= 加法赋值运算符 a+=1 === a=a+1
-= 减法赋值运算符 a-=1 == a=a-1
*= 乘法赋值运算符 a*=b == a=a*b
/= 除法赋值运算符 a/=b == a=a/b
%= 取模赋值运算符 a%=b == a=a%b
**= 幂赋值运算符 a**=b == a=a**b
//= 取整赋值运算符 a//=b == a=a//b
交叉赋值:
# m=20 n=10 m,n=n,m
4、逻辑运算
# not 布尔 “非” 如果x为True 则返回False 取反
# and 布尔 “与” and 两边条件同时为满足
# or 布尔 “或”
强调:
如果有多个条件判断,最好用()区分优先级
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3) False
5、身份运算
# is 比较的是id # == 比较的是值
九、流程控制之if
格式1
if '条件': code1 code2 .......
# 示例:
a=10
b=6
if a > b:
print('true')格式2
if '条件': code1 code2 ... else: #当if条件为False时 code1 code1 ...# 示例
info=['Fred','18','9you']
if 'Fre' in info:
print('Fred in 9you')
else:
print('Fre is not foud')格式3
if '条件1': code1 code2 ... elif '条件2': code1 code2 ... elif '条件3': code1 code2 ... else code1 code2 ...#示例:
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
result=int(input('please your is result: ').strip( ))if result >= 90:
print('优秀')
elif result >= 80:
print('良好')
elif result >= 70: print('普通')
else:
print('很差')
格式4
# if嵌套
if '条件1':
if '条件2':
if '条件3':
# 简单用户登录认证
#!/usr/bin/env python
userinfo={
'lichunke':{'passwd':123,'count':0},
'chunke':{'passwd':123,'count':0},
'fred':{'passwd':123,'count':0},
}
usernamne=input('please input your username: ').strip( )
if usernamne not in userinfo:
print('%s not found' %usernamne)
userpasswd=int(input('please input your passwd: ').strip( ))
if usernamne in userinfo and userpasswd == userinfo[usernamne]['passwd']:
print('welcome %s login' %usernamne)
cmd=input('please input cmd: ').strip( )
if cmd == 'q':
print('%s is quit' %usernamne)
else:
print('%s is running' %cmd)
else:
print('userpasswd is error')
十、流程控制之while && for 循环
# 循环:提高开发效率,提高代码重用性,便于后期代码维护1、条件循环:
while 条件:
循环体# 条件为True,继续循环,知道条件为False,则退出循环
# 如果条件为False,不循环,直接退出
# 打印5以内的偶数:
n=0
while n < 5:
print(n)
n+=2
2、死循环
# 2、死循环while True:
循环体# 从0开始,打印所有偶数count=0
while True:
print(count)
count+=2
3、循环嵌套tag
tag=True while tag: name = input('please input your name: ').strip() passwd = int(input('please input your passwd: ').strip()) if name == 'fred' and passwd == 123: print('welcome %s login' %name) while tag: command=input('please input your cmd: ').strip( ) if command == 'q': print('%s is quit' %name) tag=False else: print('%s is runnig' %command) else: print('用户名密码错误')4、break and continue
# break:终止本层循环 # continue:跳出本次循环>>> for i in range(1,5):
... if i == 3:continue
... print(i)
...
1
2
4>>> for i in range(1,5):
... if i == 3:break
... print(i)
...
1
2#######break and continue同样适用于while
5、else
for i in range(0,3): if i == 2: continue print(i) else: print('循环正常结束了')# 执行结果:0
1
循环正常结束了i=0
while i < 3:
if i == 1:break
print(i)
i+=1
else:
print('循环正常结束了')# 执行结果:0#########总结:##############1、else的代码,只会在循环没有被break的终止的情况下执行2、continue不影响else代码的执行# while和for循环总结 while:循环重复的代码 for:一般用来取值4、练习
# 1)取出10以内的奇数foriinrange(1,10):print
if i%2 == 0:continue #如果i%2的值为0,说明其能被2除尽,肯定偶数咯,跳过
(i)for i in range(1,10,2): # range最后一位是步长,默认是1 print(i)# 2)求10以内所有数之和
sum=0while
i=0i < 10:print
sum=sum+i
i+=1(sum)sum=0foriinrange(0,10):print
sum=sum+i(sum)
十一、变量的解压
a=[1,2,3] x,y,z=a #x=a[0] y=a[1] z=a[2] print(x,y,z) #此处有个问题,如果要赋值的变量超出列表的长度,则会报错 a=[1,2,3] x,y,z,x=a ValueError: not enough values to unpack (expected 4, got 3 # a的len只有3,但是要赋值给4个变量,所以报错 只取列表中的部分值,赋值给新变量(变量的解压) a=[1,2,3,4,5,6] x,y,z,*_=a #此处的*_表示从此出开始后面所有的值都是空,亦不取 print(x,y,z) 1 2 3 a=[1,2,3,4,5,6] *_,x,y=a #取最后两个值 print(x,y) 5 6
十二、2进制、8进制、10进制、16进制在Python中的表示方法和互相转换的函数
''' 2进制: 满2进1 用0b表示 8进制: 满8进1 用0o表示 10进制: 满10进1 16进制: 满16机进1 用0x表示 转换方法 bin() 转2进制 int() 转10进制 oct() 转8进制 hex() 转16进制 ''' # 十六进制数 0x332 print('2进制: ' + bin(0x332)) print('8进制: ' + oct(0x332)) print('10进制: ', int(0x332))
十三、变量互换
#变量值互换 m=10 n=20 m,n=n,m print(m,n) 20 10 #上面的在python解释器内原理为: m=10 n=20 temp=m #先把m作为一个临时的变量的值,此时m与10的关系解除 m=n #把n的值赋给m n=temp #temp的值就是10 print (temp) 10 print(m,n) 20 10