Python——基础
程序解释:
程序是由一组计算机能识别的指令和数据组成!进程是一组程序在内存中运行的实例
计算机冯诺依曼体系、组成:
- CPU包含:运算器、控制器、寄存器、多级缓存
- 运算器:处理数据
- 控制器:控制程序的运行
- 存储器:存放数据和指令
- 输入和输出设备(Input、Output)
计算机处理的数据和指令用二进制数来表示,CPU按照顺序执行,首先计算机把要执行的程序和需要处理的处理放入主存储器(内存)中,然后按照顺序从主存储器中取出依次执行,执行完成放入到内存或者CPU的多级缓存中!
编程语言:
- 编译型:把源代码转换成目标机器能够直接运行的CPU指令
- 解释型:先把源代码转换成中间字节码,然后运行在解释器上。优点:跨平台容易,缺点:因为不是直接运行在CPU之上,所以性能会有一些损失!
语言发展:非结构化—>结构化—>面向对象—>函数式
Python学习
一,基础语法:
表现类型:
数字:
int():整型,Python不区分长整型和整型,长度受限于内存大小
bool():布尔型,True和False表示;布尔类型是int类型的子类,可以表示为1或者0.
float():浮点数。
complex():复数。
str():字符串类型,如:’abc’
引号:
- 单引号:用print()函数打印出来是字符串
- 双引号:同单引号一样
- 三单(双)引号:可以跨行并且可以在中间自由使用单引号、双引号。如果在字符串前面加上(r)或者(R),表示该字符串中的特殊字符串不做特殊处理!
- 特殊字符:\ \t \r \n \’ \”
缩进:
- Python使用缩进的方式表示层级关机
- 建议使用4个空格
续行:
- 在行尾使用(\)
- 如果使用各种括号,认为括号内是一个整体,内部跨行不用(\)
标识符:
- 一个变量名指代一个值,变量是数据存储的容器
- Python可以使用字母、数字和下划线,开头不能使用数字,最好也不要使用下划线
- 不能是Python的关键字,如:class
- Python是大小写敏感
- 变量赋值后,可以改变值得标识符
二,Python的语言类型
Python是动态语言,强类型!
动态语言:
- 变量在使用之前不需要声明类型,通常变量的类型是被赋值的那个值的类型!
强类型:
- 一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型。
三,运算符
重点:算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符(可以使用小括号改变执行顺序)
算数运算符:
符号 | 解释 |
---|---|
+ | 加号,例如:print(1 + 1)=2 |
- | 减号,例如:print(2 - 1)=1 |
* | 乘法,例如:print(2 * 3)=6 |
/ | 自然除法,例如:print(2 / 3)=0.6666666666666666 |
% | 取余数,例如:print(3 % 3)=0 |
// | 整除,例如:print(1 / 2),结果0,只取整数部分 同时取地板值,math.floor() |
** | 幂运算,例如:print(2 ** 3)=8 |
位运算符:
符号 | 解释 |
---|---|
& | 位与,二进制相与,同为1时才为1 |
| | 位或,二进制相或,有一位为1就为1. |
~ | 取反,计算机把数值转换为二进制先按位取反,在取补码(符号位不变,其余各位取反最后加1) |
^ | 异或,当对应的二进制位相异时为1,相同为0 |
<< | 左移动运算符,高位丢弃,低位补0 |
>> | 右移动运算符 |
比较运算符(返回结果布尔值):
符号 | 解释 |
---|---|
== | 等于,比较对象是否相等 |
!= | 不等于,比较两个对象是否不相等 |
> | 大于,返回x是否大于y |
< | 小于,返回x是否小于y |
>= | 大于等于,返回x是否大于等于y |
<= | 小于等于,返回x是否小于等于y |
逻辑运算符:
符号 | 解释 |
---|---|
and | x and y;如果x为False,x and y返回Flase,则返回y的值 |
or | x or y;如果x为True,则返回x的值,否则返回y的值 |
not | not x;如果x为True,则返回Flase,否则返回True |
赋值运算符:
符号 | 解释 |
---|---|
= | 简单赋值,x=20 |
+= | 加法赋值运算,x += y;x=x + y |
-= | 减法赋值运算,x -= y;x=x - y |
*= | 乘法赋值运算,x = y;x=x y |
/= | 除法赋值运算,x /= y;x=x / y |
%= | 取余赋值运算,x %= y;x=x % y |
**= | 幂赋值运算,x = y;x= x y |
//= | 取整数赋值运算,x //= y;x=x // y |
成员运算符:
符号 | 解释 |
---|---|
in | 如果在指定的序列中找到值返回True 否则返回False |
not in | 如果在指定的序列中没有找到值返回True 否则返回False |
身份运算符:
符号 | 解释 |
---|---|
is | 判断两个标识符是否引用自一个对象, 例如:id(x)等于id(y) |
is not | 判断两个标识符是否引用自不同的对象 |
四,计算机基础之原码,反码,补码
机器数:
- 一个数在计算机中的二进制表示形式,叫做这个数的机器数
- 机器数是带符号位,在计算机中用一个数的最高位存放符号,正数为0,负数为1
真值:
- 因为第一位是符号位,所以机器数的形式值就不等于真正的值,为了区别,将符号位的机器数对应的真正数值称为机器数的真值
原码:
- 原码就是符号位加上真值的绝对值,即用第一位表示符号位,其余位表示值,比如8位二进制,原码是人类最容易理解和计算的方式。
反码:
- 正数的反码是其本身
- 负数的反码是在其原码的基础上,符号位不变,其余个位取反
补码:
- 正数的补码就是其本身
- 负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1(即在反码的基础上+1)
表示式:
由数字、符号、括号、变量等组合而成!
- 算数表达式
- 逻辑表达式
- 赋值表达式
Python中内存管理
- 变量无需提前声明,也不需要指定类型!
- Python使用引用计数记录所有对象的引用计数
- 当引用计数为0时,它就可以被垃圾回收GC
Python中程序控制语句
顺序语句:
- 按照先后顺序一条一条执行
分支语句:
- 根据不同的情况判断,条件满足执行某条件下的语句
循环语句:
- 条件满足就反复执行,不满足就退出当前循环
真值表:
符号 | 解释 |
---|---|
“”空字符串 | 假 |
“string” | 真 |
0 | 假 |
>=1 | 真 |
<=1 | 真 |
()空元组 | 假 |
[]空列表 | 假 |
{}空字典 | 假 |
None | 假 |
Python之基础语法
单分支语句:
if condition:
代码块
condition必须是一个布尔类型,条件为True或者False;
例如:
if 1 < 2:
print("1 less than 2")
多分支结构:
格式:if ... elif ... else
if condition1:
statement_block_1
elif condition2:
statement_block_2
elif condition3:
statement_block_3
.....
else:
statement_block_n
例如:
1,判断一个数值在哪个区间?
# 判断一个数在哪个区间
# input函数用来做一个供用户输入
num = int(input(">>>"))
# 判断是否小于10
if num < 10:
print("0--10")
# 判断是否小于100
elif num < 100:
print("10--100")
# 判断是否小于1000
elif num < 1000:
print("100--1000")
# 如果都不是就执行else
else:
print("1000 The above")
分支嵌套语句:
if condition1:
statement_block_1
if condition2:
statement_block_2
else:
statement_block_3
else:
statement_block_4
例如:
# 判断一个学生成绩在A、B、C、D、E,或者不及格
# 请输入一个学生成绩,输入的字符需要int转换成数值类型
score = int(input(">>>"))
# 开始判断
if score < 80:
if score < 70:
if score < 60:
print("Student achievement in E")
else:
print("Student achievement in D")
else:
print("Student achievement in C")
elif score < 90:
print("Student achievement in B")
else:
print("Student achievement in A")
课后练习:
1,输入2个数值,输出最大数值
# 判断2个数,输出最大数
# 输入2个数值
num1 = int(input("Num1>>>"))
num2 = int(input("Num2>>>"))
# if判断语句
if num1 > num2:
print("num1 is upper")
else:
print("num2 is upper")
2,判断3个数,输出最大数,不能准确判断有相同大小的最大数!
# 输入3个数值
num1 = int(input("Num1>>>"))
num2 = int(input("Num2>>>"))
num3 = int(input("Num3>>>"))
if num1 > num2:
if num1 > num3:
print("Num1 is upper")
else:
print("Num3 is upper")
else:
if num2 > num3:
print("Num2 is upper")
else:
print("Num3 is upper")
3,给定一个不超过5位的正整数,判断有几位
# 输入一个不超过五位的数
num = int(input(">>>"))
if num // 10000 > 0:
print("is 5")
elif num // 1000 > 0:
print("is 4")
elif num // 100 > 0:
print("is 3")
elif num // 10 > 0:
print("is 2")
else:
print("is 1")
#解法二:
# 输入一个不超过五位的数
num = int(input(">>>"))
if num >= 1000:
if num >= 10000:
print("is 5")
else:
print("is 4")
elif num >= 10:
if num >= 100:
print("is 3")
else:
print("is 2")
else:
print("is 1")
循环–while语句:
语法:
格式:
while condition:
block
重点:当condition为True即条件满足,进入循环体,执行block语句块。
# 打印10到1
# 定义一个变量
flag = 10
# 循环,条件flag不为假就可以继续循环,所以只要不是空集合,None,0都为True,而True就是可以进入循环
while flag:
print(flag)
flag -= 1
循环–for语句:
语法:
格式:
for Element in Iteratable:
block
重点:当可迭代对象中有元素可以迭代,进入循环体,执行block
# 打印1到10:
# 默认range函数是从0开始,一直到最后一个数减去1,也就是前包后不包。
# for i in range(0, 10):
# print(i + 1)
for i in range(10):
print(i + 1)
# 打印倒序10 到 1
for i in range(10, 0, -1):
print(i)
循环continue和break语句:
continue:
- 中断当前循环的档次执行,继续下一次循环
for i in range(10):
# 用i与1相与,如果为真就continue退出本次不打印,否认就打印
if i & 1:
continue
print(i)
break:
- 终止当前循环
# 给出一个为0的计数变量
count = 0
# for循环1000以内,以步长为7的数
for i in range(0, 1000, 7):
# 打印能被7整除的数
print(i)
# 计数器没循环一次就加1
count += 1
# 判断计数器是否大于20,如果大于20就直接退出整个for循环
if count > 20:
break