一、概述
- 版本python3.3.2
- IDLE 是一个 Python Shell ,是一个通过键入文本与程序交互的途径。
二、小游戏
1.IDLE一ctrl+n新建窗口
2.运行: run>run module (F5).
3.temp :字符串变刃
4.BIF == Built- in functions:【dir (6uiltins)】
5.= 赋值操作:从右往左
三、符号,变量,字符串
1.>>>:提示符,表示准备好了可以键入python指令。
2.指令句末无 ;
3.变量使用前必须赋值,名称(标识符)只能由字母、数字和下划线(_)构成,且不能以数字打头。
4.字符串要在字符两边加成对的引号,单双皆可。在不能避免单双引号冲突时,可以用转义字符(\)代替。【需要输出\时,输\】
5.原始字符串:转义字符需要正常使用,不作为转义字符时,可以在前面加上r,表示原始字符串,转义不生效。
6.数字直接加减,字符串可以拼接
7.长字符串:前后用三个单引号或双引号,实现跨行字符串,即不用\n即可做换行。
四、条件分支
4. 比较操作符
2.条件分支语法
If:
else:
3.while循环(与C语言相通)
使用and逻辑操作符(优先级高于比较运算符)
Python的and逻辑操作符可以将任意表达式连接在一起,并得到一个布尔类型的值。
4.引入外援
第三个改进要求:每次运行程序产生的答案是随机的。
需要引入外援: random模块
这个random模块里边有一个函数叫做:randint(), Ta会返回一个随机的整数。
五、数据类型
1.不同数据类型
整型:3的版本将整型和长整型结合到一起,所以不限制数据长度
浮点型:有小数点
E记法:科学计数法
布尔类型:特殊的整形 true1;false0
2.数据类型转换
Int()整数
Str()字符串
Float()浮点数
截断处理:砍掉小数点后的内容(非四舍五入)
Type()、insinstance() 查看函数类型
六、基本操作符
1.算术操作符
1.1运算符
% / ** //
+= -=
*= /=
Python的除法(/)变成了真实的除法,返回的可以是浮点数,但仍保留了地板除法,用//表示(整数和浮点数都是地板除法)
“”表示幂运算,“35“即”35”,3的5次幂。
1.2优先级
幂运算优先级比其左侧一元运算符高,比其右侧一元运算符低
2.比较操作符
3.逻辑操作符
not非 高于 and且 高于 or或
在python中“3<4<5”是成立的,解释为”(3 < 4)and(4 < 5)”
3.三元操作符
X if
x < y else y
当x<y为真,则将x的值返回,若为假,将y的值返回
条件表达式(三元操作符)
有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作:
x,y=4,5
ifx<y:
small
= X
else:
small
= y
例子可以改进为:
small=XifX<yelsey
七、循环
1.断言:assert
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
举例:
assert 3 > 4
一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
2.while循环
while 条件:
循环体
3.for循环
虽然说Python是由C语言编写而来的,但是Ta的for循环跟C语言的for循环不太一样,Python的for循环显得更为智能和强大。
For 目标
in 表达式
循环体
4.range()
语法: range( [strat, ] stop[, step=1] )
-这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
step=1表示第三个参数的值默认值是1。
range这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列。
5.Break和continue语句
Break跳出循环,continue终止本轮循环,条件判断后进入下一循环
八、列表[ ]
1.从列表中获取元素
跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索引值是从0开始的。
列表中可混合类型,而数组中则是单一类型
2.创建列表
创建一个普通列表
创建一个混合列表
创建一个空列表
3.向列表添加
i.
append( ) 向列表增加一个参数
member.append( )
member:列表对象
.:范围
append:属于对象的函数称为方法
ii.
extend( ) 扩展列表 向列表增加一个列表
member. extend ([‘‘, ‘‘] )
iii.
insert(索引值,“
”)
索引值从0开始!!
4.从列表删除元素
i.
remove( )
member.remove(“ ”) 需知元素具体名
ii.
del del member[ 索引值 ]
iii.
pop( ) 可赋值
member.
pop(索引值)
member.
pop( ) 返回、删除最后一个元素
5.列表分片(Slice)
利用索引值,每次我们可以从列表获取一个元素,但是我们总是贪心的,如果一次性需要获取多个元素,有没有办法实现呢?利用列表分片,我们可以简单的实现这个要求。
Member[ n:m] 从索引值n开始到索引值m-1结束
Member[ n:] 从索引值n到最后
Member[:m] 从最开始到索引值m
Member[:] 列表的拷贝
关于拷贝的补充:
若List11=list13,则list11改变时,list13也改变
若list12=list[:]
6.列表比较
从索引值为0的位置开始比较
“+”:两边类型相同时,拼接,但是类型不同时不能使用
“*”:类型相同时复制(重复操作符)
7.判断元素是否在列表中
123
in list3 只影响一层,不能判断列表包含的列表的元素
123
not in list3
8.列表的小伙伴(内置函数)
i.
count( ) 计算参数在列表中出现
ii.
index ( , ,)
iii.
revers 将最后的调到最前,倒数第二到前第二(原地翻转)
iv.
sort 用指定顺序排列表 sort(func,key)
sort ()默认从小到大排列
sort(revers=True) 从大到小排列
九、元组:戴上了枷锁的列表
区别:列表可任意修改、增减其中的元素,权限大;元组则不行,不可改变
1.创建和访问元组
tuplel=(1,2,3,8,7,6,4,5)——tuple[1]=2
tuplel也可切片 tuple[:] tuplel[5:]
元组的关键符号是“,”
Tuplel=(1) (X) 是整型
Tuplel=(1,) 才是元组
Tuplel=( )空元组
8*(8)=64
8*(8)=(8,8,8,8,8,8,8,8)
2.更新和删除:
元组相关操作符:del 是删除整个元素
但是python有回收机制,拼接操作
3.加入:切片
十、序列
列表、元组、字符串共同点
-都可以索引得到每一个元素
-默认索引值从零开始
-可以通过分片的方法得到一个范围内的元素集合
-有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
2.list() :把一个可迭代对象转化为列表在这里插入图片描述
tuple() :把一个可迭代对象转化为元组
str() :把obj对象转换为字符串
len(sub) :返回参数sub的长度包括空格符号
函数max() ; min() sum()数据类型要一样才能比sorted()将数组进行排序的结果输出,不改变原数组
sort()排序后把原数组也改变了
enmuerate()
在这里插入图片描述zip()相当于组队打包定义函数
def函数名):
(2)可以带参数的函数,如果多个参数只需要都好隔开(3)关键字参数
在这里插入图片描述
(4)收集参数:定义函数的时候,在参数前加了- -个*号,函数可以接收零个或多个值作为参数。返回结果是一个元组。
收集参数和其他参数一_起
局部变量和全局变量
在函数里定义的变量都是局部变量,离开函数都是无效的
不要在函数内部修改全局变量,会产生同名的-一个全局变量和一个局部变量
global语句:为一个定义在函数外的变量赋值声明这个在函数里的变量是全局变量
十一、函数
1.形参和实参
def MyFirstFunction( name):
‘函数定义过程中的name是叫形参’(函数文档,会被存储,但不会打印出来,功能和注释一样)
#因为Ta只是一个形式,表示占据一个参数位置
print('传递进来的’+ name + '叫做实参,因为Ta是具体的参数值! ')
MyFirstFunction(‘小甲 鱼’)
传递进来的小甲鱼叫做实参,因为Ta是具体的参数值!
形式叁数( parameter)
实际叁数(argument)
2.函数文档
函数名.doc 即可打印函数文档
Help(函数名)
3.关键字参数
4.默认函数
在参数定义过程中为形参赋初值,当函数调用是忘记了给实参,那就会自动去找默认值代替
5.收集参数
在函数前加上“*” 即可变
把标志为收集参数的参数用一个元组打包起来,用逗号隔开,将其放到名字上
如果后面要加定制参数,就要用关键字参数
6.函数与过程
函数(function):有返回值
过程(procedure) 是简单、特殊并且没有返回值的
Python严格来说只有函数没有过程
动态的确定类型
Python可返回多个值(用列表)
7.变量作用域
局部变量
全局变量
可以随意访问全局变量,但在函数内部修改时,python会自动创建一个名字一样的局部变量
十二、递归
1谢尔宾斯三角形
女神自拍
2递归求阶乘的函数
:求五的阶乘
非递归版本:
factorial (n) ;
result=n
For I in range(1,n):
result*=I
Return result
Number=int(input(请输入-个正整数’) )result= factorial (number)
Print( "%d的阶乘是: %d "% (number, result) )
递归版本:
Def factorial (n):
Ifn==1:
Return
Else:
Return n*factorial(n-1)
Number=int(input(请输入-个正整数:
') )
result=factorial (number)
printf ( “%d的阶乘是: %d” % (number, result) )条件: 1.有调用函数自身的行为
3.有一个正确的发挥条件
4.波那契数列.
用数学定义
f (n) =1,当n=1
1,当n=2
f (n-1) +f (n-2) ,当n>2
Def fab(n):
n1=1
n2=1
n3=1
If n<1;
Print('输入有误")
Return=1
While (n-2) >0;
N3=n2+n1
N1=n2
N2=n3
N=1
Return n3
Result=fab(20)
If result!=-1:
Print( '总共有%d对小兔子诞生! '%result)
Def fab(n):
If n<1;
Print(输入有误!)
Return -1
Ifn1 or n2;
Return 1
Else:
Return fab(n- 1)+fab(n-2)
Result= fab(20)
If result !=-1:
Print( '总共有%d对小兔子诞生! '%result)
分治思想
5 汉诺塔
2020年7月14日
18:32
Def hanoi (n, x, y, z) ;
If n==1 ;
print (x, ‘–>’,z)
Else:
hanoi (n-1, x, z, y) #将前n-1个盘子从x移动到y上
print (x, '–> ',z)#将最底下的最后一个盘子移动到z上
hanoi (n-1, y, x,z) #将y_上的n-1个盘子移动到z上
n=int (input ( '请输入汉诺塔的层数:))
Hanoi(n,‘x’,‘y’,‘z’)