python基础语法

冯诺依曼体系

图片.png
CPU:运算器和控制器
    运算器:完成各种算数运算,逻辑运算,数据传输等各种数据加工处理
    控制器:控制程序的运行
存储器:用于记忆程序和数据(内存)
输入设备:将数据或程序输入到计算机中(键盘,鼠标)
输出设备:将数据或程序处理结果展示给用户(显示器,打印机)

CPU中还有寄存器和多级缓存Cache

程序

程序
  算法+数据结构=程序
  数据一切程序的核心
  数据结构是数据在计算机中的类型和组织方式
  算法是处理数据的方式,算法有优劣之分

写程序的难点
  理不清数据
  搞不清处理方法
  无法把数据设计转换成数据结构,无法把处理方法转换成算法
  无法用设计范式来进行程序设计
  世间程序皆有bug,但不会debug

python基础语法

注释  --- # 标注的文本
#########################################################################

数字
  整数,不区分long和int
    进制0xa(16进制),0o10(8进制),0b10(2进制)
    bool,2个值True,False
  浮点数
    1.2, 3.1415, -0.12, 1.46e9等价于1.46*10^9
  负数
    1+2j
#########################################################################

字符串
  使用' "单双引号引用的字符的序列
  ''' """ 单双三引号,可以跨行,可以在其中自由的使用单双引号
  在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
#########################################################################

转义序列
  \\ \t \r \n \' \"
  前缀r,把里面的所有字符当普通字符对待
#########################################################################

缩进
  未使用C等语言的花括号,而是采用缩进的方式表示层次关系
  约定使用4个空格缩进
#########################################################################

续行
  在行尾使用\
  如果使用各种花括号,认为括号内是一个整体,内部跨行不用\
#########################################################################

标识符
  1.一个名字,用来指代一个值
  2.只能字母,下划线和数字
  3.只能以字母或下划线开头
  4.不能时python的关键字,例如def,class就不能作为标识符
  5.python是大小写敏感的
  
  约定
  不允许使用中文
  不允许使用歧义单词,例如class_
  在python中不要随便使用下划线开头的表示符
#########################################################################

常量
  一旦赋值就不能改变值的标识符
  python中无法定义常量
#########################################################################

字面常量
  一个单独的量,例如 12,"abc",'2341356514.03e-9'
#########################################################################

变量
  赋值后,可以改变值的标识符
图片.png

python的语言类型

python是动态语言,强类型语言

静态编译语言
  实现声明变量类型,类型不能再改变
  编译时检查
动态编译语言
  不用事先声明类型,随时可以赋值为其他类型
  编程时不知道是什么类型,很难推断
强类型语言
  不同类型之间操作,必须先强制类型转换为同一类型.print(a+'1')
弱类型语言
  不同类型间可以操作,自动隐式转换,JavaScripts中console.log(1+'a')

图片.png

强类型语言
图片.png

弱类型语言
图片.png

运算符Operator

算术运算符
  + - * / % **
  自然除/结果是浮点数,整除//. 注:2.x中,/和//都是整除
位运算符
  & | ~ ^ << >>
    &   位与
    |   位或
    ~   取反
    ^   异或
    <<  向左的位移
    >>  向右的位移
  常用方式:乘除2的倍数,32//4相当于32>>2
  12 0xc 0o14 0b1100
    ~12等于多少?
图片.png

源码,反码,补码,负数表示法

源码
    5 => 0b101, 1 =>0b1, -1=>-0b1, bin(-1)
#########################################################################

反码
    正数将源码按位取反;负数符号位不变其余按位取反
#########################################################################

补码
    正数的补码是其本身;负数符号不变其余按位取反后+1
#########################################################################

负数表示法
    数字电路的CPU中的运算器实现了加法器,但是没有减法器,减法是转换成加法
    负数在计算机中使用补码存储,-1的补码为1111 1111
    5-1 => 5+(-1)直觉上是0b101-0b1,其实计算机中是0吧01+0b11111111,溢出位舍弃
    ~12为什么是-13?
    10^9等于?10^-9等于?为什么

运算符

比较运算符
    == != > < >= <=
    返回一个bool值
    1<'1' 1==1
#########################################################################

逻辑运算符
    与或非 and or not
    短路运算符
        and 如果第一个表达式为False,后面就没有必要计算了,这个逻辑表达式一定是False
        or 如果第一个表达式Ture,后面没有必要计算了,这个逻辑表达式一定是Ture
#########################################################################

赋值运算符
    a = min(3,5)
    += -= *= /= %= 等
    x = y = z = 10
#########################################################################

成员运算符
    in, not in
#########################################################################

身份运算符
    is, is not

运算符优先级(由高到低)

运算符 描述
'expr' 字符串转换
{key:expr,...} 字典
[expr1,expr2...] 列表
(expr1,expr2,...) 元组
function (expr,...) 函数调用
x[index:index] 切片
x[index] 下标索引取值
x.attribute 属性引用
~x 按位取反
+x, -x 正, 负
x**y
x*y, x/y, x%y 乘, 除, 取模
x+y, x-y 加, 减
x<<y, x>>y 移位
x&y 按位与
x^y 按位异或
x|y 按位或
<,<=,>,>=,!=,== 比较
x is y, x is not y 等同测试
x in y, x not in y 成员判断
not x 逻辑否
x and y 逻辑与
x or y 逻辑或
lambda arg, ... :expr Lambda匿名函数
算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
记不住,用括号
长表达式,多用括号,易读,易懂

表达式Expression

由数字,符号,括号,变量等的组成
    算数表达式
    逻辑表达式
    赋值表达式
        python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义

内存管理

变量无需事先声明,也不需要指定类型
    动态语言的特性
编程中一般无需关心变量的存亡,也不用关心内存的管理
python使用引用计数记录所有变量的引用数
    当变量应用数变为0,它就可以被垃圾回收GC
    技术增加:赋值给其他变量就会被增量引用计数,例如:x=3;y=x
    计数减少
        函数运行结束时,局部变量就会被自动销毁,对象引用计数减少
        变量被赋值给其他对象.例如:x=3;y=x;x=4
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求

程序控制

顺序
    按照先后顺序一条条执行
    例如:先洗手,再吃饭,再洗碗

分支
    根据不同的情况判断,条件满足执行某条件下的语句
    例如:先洗手,如果饭没有做好,玩游戏,如果饭做好了,就吃饭,如果饭都没有做,叫外卖
循环
    条件满足就反复执行,不满足就执行或不再执行
    例如:先洗手,看饭好了没有,没有好,一会来看一次是否好了,一会儿来看一次,直到饭好了,才可以吃饭,这里循环的条件是饭没有好,饭没有好,就循环的来看饭好了没有

单分支结构

if语句
    fi condition:
        代码块
    condition必须是一个bool类型,这个地方有一个隐式转换bool(condition)
    
    示例:
    if 1<2:
        print('1 less than 2')
        
    代码块
        类似于if语句的冒号后面的就是一个语句块
        在if,for,def,class等
图片.png

真值表

对象/常量
""
"string"
0
>=1
<=-1
()空元组
[]空列表
{}空字典
None
False等价布尔值,相当于bool(value)
    空集合
        空字符串
        空字典
        空列表
        空元组
    None对象
    0

多分支结构

if condition1:
    代码块1
elif condition2:
    代码块2
elif condition3:
    代码块3
......
else:
    代码块
    
    
#示例:
a=-5
if a<0:
    print('negative')
elif a==0:
    print('zero')
else:
    print('positive')

分支嵌套

score=0
if score<0:
    print('wrong')
else:
    if score==0:
        print('egg')
    elif score<=100:
        print('right')
    else:
        print('too big')

嵌套结构,可以是分支,循环的嵌套
可以互相嵌套多层

#练习
给定一个不超过的5位数,判断其有几位数
num=input('>>>')
num=int(num)
if num>=1000:
    if num>=10000:
        print(5)
    else:
        print(4)
else:
    if num>=100:
        print(3)
    elif num>=10:
        print(2)
    else:
        print(1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容