卷起来啊,未末家的张先生(初章)
1、Python简介
(1)跨平台
(2)解释型语言(不需要编译),区别于Java,Java代码需要先编译,才能运行
(3)交互式语言
(4)面向对象语言
2、Python开发环境搭建
python是一门解释型语言,故需要安装python解释器
 
 IDLE:python自带的开发工具
Python 3.8:命令行工具(交互式编程)
Python3.8 Manuals:技术文档
Python 3.8 Module:Python已安装的模块的文档
3、PyCharm的安装与使用
4、print函数的使用
5、转义字符
即反斜杠+想要实现的转义功能首字母
例如:
换行:\n
回车:\r
tab:\t
6、二进制与字符编码

 1TB = 1024GB
1GB = 1024MB
1MB = 1024kB
1KB = 1024byte
1Byte = 8bit
计算机是由逻辑电路组成的,它只能区分0和1
为了让计算机认识并区分更多的东西,将一些符号和数字进行对应,然后做成一张ASCII表,告诉计算机某个符号需要使用哪个整数表示。例如大写字母’A’用十进制65表示
通俗易懂的解释:编码表就是规定了哪一个字符用哪一个数字去表示
例如:'乘'这个汉字再在计算机中的表示
print(chr(0b100111001011000))
print(ord('乘'))
7、Python中的标识符和保留字
import keyword
print(keyword.kwlist)
8、变量的定义和使用

 变量由三部分组成:
 (1)内存地址:表示对象存储在计算机中的地址,使用内置函数id(obj)来获取
 (2)类型:表示的是对象的数据类型,使用内置函数type(obj)来获取
 (3)值:表示对象所存储的具体数据,使用print(obj)可以将值进行打印输出
 
 内存图:name实际上存储的是对象的二进制的内存地址,指向自身存储的二进制内存地址所对应的对象
 
9、变量的多次赋值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2FA8722-1641826011906)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641476302422.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/14I8K5S58C.png)
 例如:
#n赋初始值为3,实际上是将3这个对象的内存地址赋值给了n这个变量(引用)
n = 3
#n又被赋值为4,实际上是将4这个对象的内存地址赋值给了n这个变量(引用),n被重新赋值,故n指向的内存地址由3变成了4
n = 4
10、常用的数据类型
常用的数据类型:
 (1)整数类型int:98
 (2)浮点数类型float:3.14159
 (3)布尔类型bool:True、False
 (4)字符串类型str:‘Hello World’
11、整数类型
英文为Integer,简写为int,可以表示正数、负数和零
 整数的不同进制表示方式:
 十进制:默认的进制
 二进制:以0b开头
 八进制:以0o开头
 十六进制:以0x开头
12、浮点类型
浮点数由整数部分和小数部分组成
 浮点数存储不精确性:使用浮点数进行计算时,可能会出现小数位数不确定的情况
 
13、布尔类型
用来表示真或假的值
 True表示真,False表示假
 布尔值可以转化为整数:True:1 False:0
print(True + 1)		#2
print(False + 1)	#1
14、字符串类型
字符串类型又被称为不可变字符序列
 可以使用单引号、双引号、三引号来定义
 单引号和双引号定义的字符串必须在一行
 三引号定义的字符串可以分布在连续的多行
15、数据类型转换
为什么需要数据类型转换?
 将不同数据类型的数据拼接在一起
 
 str():将其它类型转成字符串str类型,例如:int类型、float类型、bool类型
 int():将其它类型转换成整数int类型,例如:float类型、str类型、bool类型 注意:1、文字类和小数类字符串无法转化成整数 2、浮点数转换成整数,抹零取整
 float():将其它类型转换成浮点数float类型,例如:int类型、str类型、bool类型 注意:整数转换成浮点数,末尾为.0
16、Python中的注释
注释:
 注释的内容会被python解释器忽略
 三种类型的注释:
 单行注释:以井号’#‘开头
 多行注释:’’'三引号包围起来
 中文编码声明注释:在文件开头加上中文声明注释,用以指定源码文件的编码格式(Python3不使用了)
17、input函数的使用

 input()函数返回值的类型也是str
name = input('请输入你的姓名:')	#未末家的张先生
print(name)						#未末家的张先生
print(type(name))				#<class,'str'>
18、Python中的运算符

 加减乘除:+、—、*、
 整除://
 模运算符(取余运算符):%
 幂运算符号:**
print(1 / 2)	#0.5
print(11 // 5)	#2
print(11 // 2)	#1
print(2 ** 3)	#8
注意:
 (1)整除时一正一负向下取整,例如:9 // -2 = -5 -9 // 2 = -5
 (2)模运算一正一负要用公式计算:余数 = 被除数 - 除数 * (整除的商),计算商时需要带符号计算
 例如:9 % -2 = 9 - (-2) * (9 // -2) = -1
19、赋值运算符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcetMx7R-1641826011910)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641566412575.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/BK2192V0fQ.png)
 赋值运算符的执行顺序是从右往左,例如:a = 10,正确解读是将3的值赋值给a,常识说a = 3是不那么合理的
#a,b,c的内存地址是一样的
a = 10
b = 10
c = 10
print(id(a))
print(id(b))
print(id(c))
理解:计算机在内存中给10这个对象开辟了一块内存空间,a,b,c三个引用分别指向10这个对象的内存空间(变量存储的实际是对象的内存地址,用于指向对象所在的内存空间),因此a,b,c这三个引用所存储的内存地址是一样的,都是10这个对象的内存地址
20、比较运算符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dO0BP1u-1641826011911)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641600324653.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/11Pbb781HM.png)
 ==比较的是对象的值
 is比较的是对象的内存地址(即比较是不是同一个对象)
 比较的结果是一个布尔值
a = 10
b = 10
print(a == b)	#true
print(a is b)	#true
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQhba375-1641826011912)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641600761707.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/83d0d7FYQK.png)
21、布尔运算符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rrI4Kl9-1641826011912)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641601540434.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/C14AEKdb2W.png)
 and:与运算符
 or:或运算符
 not:非运算符
 in和not in:成员运算符
str = 'hello'
print('h' in str)	#区分大小写
22、位运算符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjOh5yvM-1641826011913)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641602555782.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/f61K22R558.png)
 &:按位与运算符
 |:按位或运算符
 <<:左移位运算符
 右移位运算符:>>
 后续需要把负数考虑在内:负数的按位与、按位或、左移、右移
23、运算符的优先级
编码时可以用括号括起来清晰易懂
24、程序的组织结构-顺序结构
程序代码的执行是一行一行按顺序往下执行的
 任何简单或者复杂的算法都是由:顺序结构、选择结构和循环结构这三种基本结构组合而成
25、对象的布尔值
Python中一切皆对象,所有的对象都有一个布尔值,获取对象的布尔值使用内置函数:bool()
 以下对象的布尔值为False:False、数值0, 0.0、None、空字符串、空列表、空元组、空字典、空集合
 除了上述的其它对象的bool值均为True
26、分支结构
#(1)单个if:
if 条件表达式:
	条件执行体
#(2)if...else:
if 条件表达式:
	条件执行体1
else:
	条件执行体2
#(3)if...elif...elif...else:
if 条件表达式1:
	条件执行体1
elif 条件表达式2:
	条件执行体2
elif 条件表达式3:
	条件执行体3
else:
	执行体4
#(4)嵌套if:
if 外层条件表达式:
	if 内层条件表达式:
		内层条件执行体1
	else:
		内层条件执行体2
else:
	外层条件执行体
27、条件表达式
条件表达式是if…else…的缩写
 语法结构:x if 条件表达式 else y
 运算规则:如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为y
a = 1 if 1 < 2 else 0
28、pass语句
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ibIXERQL-1641826011914)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641621935142.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/2320ZddeC8.png)
29、内置函数range()
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LE0QHFCH-1641826011915)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641625220867.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/5P5ZZ45GPf.png)
 range函数在不指定初始值的情况下,默认生成的序列是从0开始的。序列的每个元素都是int类型的整数
30、循环结构-while
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNnupnkB-1641826011916)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641625740391.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/9K5b4S492N.png)
#打印1-9
a = 1
while a < 10:
    print(a)
    a += 1    
    
#计算1-100的和
a = 1
sum = 0
while a <= 100:		
    sum += a
    a += 1        
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EHaClqGi-1641826011917)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641626855622.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/Y204bYIX3V.png)
31、循环结构-for…in…
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9s24gy5-1641826011919)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641627505200.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/24342E9FV2.png)
#遍历字符串
for item in 'Hello':
    print(item)
#遍历range序列    
for item in range(1,10):
    print(item)
    
#计算1-100的偶数
sum = 0
for item in range(1,101):
    if item % 2 == 0:
    	sum += item
print(sum)
练习题:求100-1000的水仙花数
for item in range(1,1001):
    a = item % 10			#个位数字
    b = item % 100 // 10	#十位数字,注意十位数字比较容易求错
    c = item // 100			#百位数字
    if a**3 + b**3 + c**3 == item
    	print(item)
32、流程控制语句break
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S5ok61Mf-1641826011920)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641628714256.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/44P61f4H6D.png)
for item in range(1,4):
    pwd = input("请输入你的密码:")
    if pwd == '811169':
        print('密码正确')
    else:
        print('密码错误,请重新输入')
33、流程控制语句continue
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zBymHAX-1641826011921)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641629650817.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/4DI4eedbU2.png)
#输出1-50之间所有5的倍数
for item in range(1,51):
    if item % 5 != 0:
        continue
    else:
        print(item)
continue和break总结:continue用于跳过这一次的循环执行,开始执行下一次。而break是退出当前循环体
34、else语句
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0zdHLf8K-1641826011922)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641630033566.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/Q83200K565.png)
 while循环和for循环正常运行完,在没有遇到break语句时执行else
35、嵌套循环(二重循环)
循环结构中又嵌套了另外的完整的循环结构,其中内层循环作为外层循环的循环体执行
 核心:外层循环控制行与换行,内层循环控制列
 (1)九九乘法表
for item1 in range(1,10):
    for item2 in range(1,item1 + 1):
        print(item2,'*',item1,'=',str(item1*item2),end="\t")
    print()
36、二重循环中的break和continue
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYd17KPp-1641826011923)(C:\Users\Zero\AppData\Roaming\Typora\typora-user-images\1641646257928.png)]](https://file.cfanz.cn/uploads/png/2022/01/10/15/de288U7d88.png)










