python程序设计入门

python 诞生于1989年,(派森)python意思是大蟒蛇。 创始人是荷兰人吉多·范罗苏姆。

安装python解释器——https://www.python.org
直接下载installer后缀(可执行安装文件)

IDLE是python自带的一个简单的开发环境(只写简单代码或一行代码,长代码新建文件)
python3.8是交互式命令行程序
问好是官方技术文档
module docs是已安装的模块文档

第三方开发环境pycharm
https://www.runoob.com/w3cnote/pycharm-windows-install.html

数据类型,运算符等

二进制与字符编码
Unicode几乎包含了全世界的字符
UTF-8规定英文采用一个字节,中文用3个字节表示,而Unicode统统是2个字节

对象和类型

字符串(string),简记为str。使用‘ ’或“ ”括起来的一系列字符。
可以使用单引号,双引号,三引号来定义;单引号和双引号定义的字符必须在一行,三引号定义的字符串可以在来连续多行。

整数(integer),简记为int。
可以表示正数,负数和0;
十进制 默认的进制;
二进制 以0b开头;
八进制 以0o开头;
十六进制 以0x开头;

浮点数(float)
浮点数存储不精确性;
解决:导入模块decimal
from decamal import Decimal
print(Decimal(‘1.1’)+Decimal(‘2.2’))

布尔数(boolean),简记为bool
true的值为1,false的值为0;

复数(complex)

在将不同数据类型的数据拼接在一起时,需要进行类型转换
字符串转为int类型时,字符串必须是数字串,小数串也不行。
在这里插入图片描述

运算符与表达式

算术运算符

乘法:星号
除法:/ **
整除://
求余:%
指数:

一正一负整除(向下取整):
-9//4=-3;
9//-4=-3;9除以-4应该是-2.25,但是结果向下取整后变为-3

一正一负取余公式: 余数=被除数-除数*商
9%-4=9-(-4)(-3)=-3
-9%4=-9-4
(-3)=3

自动类型转换
若参与运算的两个对象的类型相同,则结果类型不变 例子:1/2 =0,整数除以整数,结果仍为整数,即0
若参与运算的两个对象的类型不同,则按照规则进行类型转换:bool——int——float——complex 方向向右转换

例子:1.0 +3=4.0 (浮点数+整数=浮点数)
true +3.0=4.0 (布尔数+浮点数=浮点数)

关系运算符

在这里插入图片描述
运算的结果只有两种(布尔型)
注意:字符串之间也可以进行大小比较

is 比较两个变量的id是否相等,返回布尔值
is not 比较两个变量的id是否不相等,返回布尔值

逻辑运算符

在这里插入图片描述
in 是否在里面
例子:s=‘hello’
print(‘e’ in s) 结果为true,e在s中

not in 是否不在里面

位运算符

位与 & 对应数位都是1,结果数位才为1,否则为0
位或 | 对应数位都是0,结果数位才是0,否则为1
左移运算符<< 高位溢出舍弃,低位补0
右移运算符>> 低位溢出舍弃,高位补0

运算符优先级

在这里插入图片描述

变量与简单I/O

变量名=对象(数值、表达式等)

标识:对象所存储的内存地址,使用内置函数id来获取
类型:对象的数据类型,使用内置函数type来获取
值:对象所存储的具体数据,使用print可以打印输出

赋值运算符

**累加: += **
**累减: -= **

系列解包赋值 a,b,c=10,20,30

标识符

变量,函数,模块等的名字
命名规则:
包含数字和字母,下划线;
首个必须是字母或下划线;
大小写敏感;
标识符不能是关键字;

关键字(保留字)
在这里插入图片描述

注释

单行注释
以 # 开头,知道换行结束;
多行注释

  1. 用三引号进行注释;
  2. 中文编码声明注释 在文件开头加上中文声明注释,用于指定源码文件的编码格式。

键盘输入函数

input函数
读取键盘输入,将所有输入作为字符串看待。
语法:input([prompt])
[prompt]是提示符,提示键盘输入的内容是什么,最好提供。
例子:radius=float(raw_input(‘Raius:’))

输出

print关键字
功能:将对象的值输出到控制台上。
语法:print object(or variable)

如何将多个对象输出到一行?
print ‘the area for the circle of radius’,radius,‘is’,area (每个对象之间用逗号分隔开,对象包括字符串或者变量)
如何将一个字符串输出多行?

转义字符:当字符串中包含反斜杠,单引号或双引号等特殊用途字符时,必须用反斜杠进行转义
常用转义符:
\n 回车
\t 制表符(Tab),制表位占4位,每4个一组,若前面占了1位,则后面只有3位空格
\r return回车,但是会覆盖前面的字符
\b 退格,会覆盖前面一格
*\ 输入一个*
\ a 响铃(Bell)
\ 单引号 转义单引号
\双引号 转义双引号

原字符:不希望转义字符起作用
print(r’hello\nworld)
结果:hello\n world
注意:最后一个字符不能时反斜杠

程序控制结构

选择结构

if语句
if num%2==0 :
print('是偶数‘)
else:
print(‘奇数’)

**多分支结构:if—elif—else语句 **
if和else进行多分支结构,else:if可以简写为elif

多分支判断:if 90<=score<=100: (只有python存在)

条件表达式
print( (num_a ‘大于等于’ num_b) if num_a>=num_b else (num_a ‘小于’ num_b) )
条件表达式,如果是true,则打印前面的;如果是false,则打印后面的

pass语句:只是一个占位符,用到需要写语句的地方
if answer==‘y’:
pass
else:
pass
使用pass占位,程序不会报错

循环结构

内置函数range():生成一个整数序列
创建三种方法:

  1. range(stop) 创建一个**[0,stop)**之间的整数序列,步长为1
  2. range(start,stop) 创建一个**[start,stop)**之间的整数序列,步长为1
  3. range(start,stop,step) 创建一个**[start,stop)**之间的整数序列,步长为step

in与not in判断整数序列中是否存在(不存在)指定的整数

while 循环

for循环
已知循环的范围(range),即起始值和步长

break 结束当前循环体,即结束整个循环结构,通常与if一起使用
continue 结束当次循环,只结束这一次的循环,进入下一次的循环继续执行

for可以和else搭配使用
for item in range(3): 当三次循环结束后,跳出循环后执行else语句
else: print(‘对不起,三次密码均输入错误’)

while 和for一样可以与else搭配使用

函数与递归函数

函数

函数定义
例子:
def 函数名(start,stop):
函数体
[return xxx]

def是关键字
(start,stop)是参数,形式参数(形参,parameter)

调用函数
print_sum(1,10) 实际参数(实参,argument)

形参名称与实参名称可以不一致

在函数调用过程中,进行参数的传递
如果是不可变对象,在函数体的修改不会影响实参的值
**如果是可变对象,在函数体内的修改会影响实参的值 **

函数的返回值

  • 函数返回多个值时,结果为元组
  • 如果函数没有返回值,return 可以省略不写
  • 函数的返回值,如果是1个,直接返回原值
  • 函数的返回值,如果是多个,返回的结果为元组

函数的参数定义

  • 函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
  • 无法事先确定传递的位置实参的个数时,使用可变的1个位置参数。使用 * 定义,结果为元组。
  • 无法事先确定传递的关键字实参的个数时,使用可变的1个关键字形参。使用 ** 定义,结果为字典。
  • 位置形参放在关键字形参后面。

变量作用域

  • 局部变量:在函数内定义的变量,只在函数内部有效;局部变量使用global声明,这个变量就会成全局变量。
  • 全局变量:函数体外定义的变量,可用于函数内外。

递归函数

**递归函数:**在一个函数体内调用了该函数本身

例子:计算6的阶乘

def fac(n):
    if n==1:
        return 1
    else:
       	res= n*fac(n-1)
       	return res
print(fac(6))

字符串

不可变序列。
使用成对的单引号或双引号括起来。或者使用三引号(’’'或者" " ")
例子:’’’ this is
a test
today ‘’’

字符串驻留机制
相同的字符串只保留一份拷贝,后续创建相同字符串式,不会开辟新空间,而是使用旧的地址
符合条件:

  • 字符串的长度为0或1时
  • 符合标识符的字符串(字母,数字,下划线)
  • 字符串只在编译时进行驻留 而非运行时
  • [-5,256] 之间的整数数字
    可以强制驻留: sys.intern( )

pycharm进行了优化处理,类似强制驻留

基本的字符串运算

长度(len()函数)

拼接(+)

重复(*)
name=‘hello’
s*3=‘hello hello hello’

成员运算符(in):判断一个字符串是否是另一个字符串的子串,返回值:true或者false
例子:name=‘hello’
‘e’ in name
返回true

for语句:枚举字符串的每个字符

字符串查询

在这里插入图片描述

字符串中每个字符都有一个索引值(下标),分为正向索引和逆向索引
例子:hello world
在这里插入图片描述

字符串常用操作

大小写转换
所有方法转换后都会产生一个新的字符串对象
在这里插入图片描述
内容对齐
在这里插入图片描述
字符串劈分操作
在这里插入图片描述
判断字符串
在这里插入图片描述
其他方法
在这里插入图片描述

字符串比较

任何一个字符都对应一个数字,即国际标准ASCⅡ码
比较规则
首先比较两个字符串的第一个字符;
如果相同,则比较下一个字符;
如果不同,则字符串的大小关系由这两个字符决定;
如果一个字符为空(较短),则更小;

比较原理
两个字符比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到原始值。相对应的有内置函数 chr ,调用时指定原始值可以得到其对应的字符。

比较方式:==和 is 的区别
== 比较的是value
is 比较的是id 是否相等

字符串切片操作

字符串是不可变类型:不能增、删、改等操作。切片会产生新的对象
在这里插入图片描述

格式化字符串

在这里插入图片描述

宽度精度控制

  • (‘ %10d’ % 99) 表示10位宽度
  • (‘% .3f’ % 3.14159) .3表示是小数点后三位
  • (‘ %10.3f’ % 3.14159) 一共总宽度为10,小数点后三位
  • (’{0: .3}‘ .format(3.14159)) .3表示是一共三位数
  • (’{: .3f}‘ .format(3.14159)) .3f表示是三位小数
  • (’{ : 10.3f}‘ .format(3.14159)) 同时设置宽度和精度,一共是10位,3位是小数

字符串编码转换

str在内存中以Unicode表示,在计算机之间传输需要以 byte 字节传输

编码:将字符串转换为二进制数据(bytes)

  • encode(encoding=‘GBK’)) GBK编码格式中,一个中文站两个字节
  • encode(encoding=‘UTF-8’)) UTF-8编码格式中,一个文中占三个字节

解码:将bytes类型的数据转换为字符串类型

  • decode(encoding=‘GBK’)) 解码

列表与元组

列表

index是索引号
在这里插入图片描述

创建方法二:使用内置函数list()
lst=list([ ‘hello’,‘word’ ,98])

获取列表元素的索引
使用 index(‘hello’)查询列表中hello的索引。如果存在多个重复的,值返回第一个元素索引。

  • 如果查询元素不在列表中,则出现valueError
  • 可以在指定的start和stop之间进行查找

按索引获取列表元素

切片

语法:[ start:stop] start:开始位置的索引值。 finish:结束位置的下一个字符的索引值。
例子:
在这里插入图片描述

  • 如果不提供start或者finish,默认start为第一个字符开始,stop为最后一个字符
  • 如果步长step是正数,例如 [: stop:step] 则切片的第一个元素默认是列表第一个元素。
  • 如果步长step是负数,例如 [ : stop:step] 则切片的第一个元素默认是列表的最后一个元素。

添加列表元素

  • 向列表的末尾添加一个元素:append( )
  • 向列表的末尾至少添加一个元素:extend( ) ,可以直接添加另外的列表
  • 在列表的任意位置添加一个元素:insert(索引,新元素 )
  • 在列表的任意位置添加至少一个元素:切片

删除列表元素

  • remove( ) 从列表中移除一个元素,如果有重复元素只移除第一个
  • pop( ) 删除一个指定索引位置上的元素;不指定索引则会删除最后一个元素。
  • 切片 一次至少删除一个元素,但是会产生一个新的列表
    若是想要用切片删除,且不产生新列表,可以将要删除的元素给空列表 [ ]
  • clear( ) 清空列表中所有元素,但列表对象还存在
  • del( ) 删除列表对象

修改列表元素

  • 直接给列指定索引的列表元素赋新的值
  • 为指定的切片赋予一个新的值
    例子:lst[1:3]=[300,400,500,600] 注意:这里[1:3]表示了4位

列表元素排序

  • 调用sort()方法,列中所有元素默认从小到大排序,可以指定reverse=true,进行降序排序。
  • 调用内置函数sorted(),可以指定reverse=true,进行降序排序,原列表不发生改变,产生一个新列表。

列表生成式

语法格式
[ i*i for i in range(1,10) ]
元素表达式 变量 整数序列

例子:lst=[i*2 for i in range(1,6)]
结果:[2,4,9,16,25]

元组

不可变序列,没有增,删,改操作

创建方法:

  • 直接创建 t=( 1,’a‘,3.14,true ) 小括号可以省略
  • 使用内置函数tuple() t=tuple ( (1,’a’,3.14,true) )

如果元组中只有一个元素,逗号不能省略,不然就是数据类型了,而不是元组类型

空元组创建

  • t4 =( )
  • t4=tuple( )

元组的遍历

  • 使用索引, print( t[0] )
    -for item in t

字典与集合

字典

scores={‘张三’ : 100}
字典名 键 冒号 值

使用内置函数dict()创建
dict ( name=‘jack’, age=20 )

字典在存储的时候,要经过哈希函数(hash)计算,得出存储位置
字典的实现原理与查字典类似,python中字典根据key查找value所在的位置

元素获取

  • 使用中括号,例子:scores[ ‘张三’ ],若键不存在,则报错
  • 使用get()方法,例子:scores.get(’ 张三’),若键不存在,返回None或者默认值

key的判断

  • in 指定的key在字典中存在返回true
  • not in 指定的key在字典中不存在返回true

字典元素删除

  • 删除指定的key-value对 del scores [‘张三’ ]
  • 清空字典元素 scores.clear()

字典元素的新增/修改
scores[ 'hello ']=100

获取字典视图方法

  • 获取字典中所有key keys()
  • 获取字典中所有value values()
  • 获取字典中所有key,value对 items()

字典元素的遍历
for item in scores:

字典生成式
{ item.upper() : price for item , price in zip(items,prices)}
key表达式 value表达式 key变量 value 可迭代对象
内置函数zip(),用于将可迭代对象作为参数,将对象中对应的元素打包为元组,然后返回这些元组组成的列表

集合

使用花括号定义,但是只有key(键),没有value,也是hash函数,无序,但是可变

创建方式:

  • 使用花括号 集合中的元素不允许重复,重复元素会被自动去掉
  • 使用内置函数set()
    print(set([3,2,4,5] )) 将列表类型转为元组类型
    print(set((3,2,4,5))) 将元组类型转为集合类型

判断操作:in 或者not in

集合元素新增

  • 调用add()方法,一次添加一个元素
  • 调用update()方法,一次至少添加多个元素

集合元素删除

  • 调用remove()方法,一次删除一个指定元素,如果指定元素不存在,则抛出keyError
  • 调用discard()方法,一次删除一个指定元素,如果指定的元素不存在,不抛出异常
  • 调用pop()方法,一次只删除一个任意元素
  • 调用clear()方法,清空集合

**集合间的关系 **

  • 两个集合相等 使用运算符==或 !=进行判断
  • 集合是否是子集 调用 issubset方法进行判断
  • 集合是否是超集 调用 issuperset方法进行判断
  • 两个集合是否交集 调用 isdisjoint方法进行判断

集合的数学操作:原集合都不发生改变

  • 交集。 使用intersection 方法 或者使用& 运算符
  • 并集 。 使用 union 方法 或者使用 | 运算符
  • 差集 。 使用 difference 方法 或者使用 - 运算符
  • 对称差集。 使用symmetric_difference 方法 或者使用 ^ 运算符

集合生成式
{ i*i for i in range(10) }
将花括号改为中括号就是列表生成式

列表,字典,元组,集合总结

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值