python学习 第一周
一、简介
1.跨平台
2.代码函数少,Java的1/5
3.应用广泛
3.从IDLE启动 Shell
二、知识点
1.基础快捷键以及符号:
提示符:“<<<”
注释:“#”
打上一条语句:“alt”+”n”
去到下一条语句:“alt”+“p”
新建窗口:“CTRL”+“N”
缩进或者联想词:“Tab”
#用缩进代替其他语言的大括号
#前一个语句有“:”时会自动缩进
保存:“CTRL”+“S”
运行:F5
2.BIF==Built-in
function 内置函数
①查找所有内置函数
②查找内置函数意义:
3.变量
变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存绪在变量中”
不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值的上边。
所以有些Python程序员会说“Python”没有“变量”,只有名字。变量名字没有数据类型。
在使用变量之前,需要对其先赋值。变量名可以包括字母、数字、下划线,但变量名不能以数字开头。
字母可以是大写或小写,但大小写是不同的。也就是说fishc和FishC对于Python来说是完全不同的两个名字
等号(=)是赋值的意思,左边是名字,右边是值,不可写反。
变量的命名理论可以取任何合法的名字,但作为一个优秀的程序员,请将尽量给变量取一个专业一点儿的名字
4.字符串
要告诉Python你在创建一个字符串,就要在字符两边加上引号,可以是单引号或者双引号,Python女士表示不挑剔。但必须成对,你不能一边单引号,另一边却花心的用上双引号结尾。
如果字符串中需要出现单引号或双引号怎么办?(最新版本可以不用转移字符,自动识别)
例如我想打印字符串: Let’s go!
有两种方法,第一种比较常用,就是使用我们的转义符号()对字符串中的引号进行转义:
'Let/'sgo!’
第二种方法:最外层用双引号
5.原始字符串
我们可以用反斜杠对自身进行转义:
str =’C:\now’
但如果对于一个字符串中有很多个反斜杠:
str
=’C:\Program Files\Intel\WiFi\Help’
原始字符串的使用非常简单,只需要在字符串前边加一个英文字母r即可:
str = r’C:\now’
原始字符串的最后不能加“\”,但如果一定要用“\”,则可以用“\”或者“\□”(加空格)
3.8新版本:不需要加r也可以转换成\输出正确的
6.长字符串
如果希望得到一个跨越多行的字符串,例如:
我爱鱼C,
正如我爱小甲鱼,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的声音
这我们就需要使用到三重引号字符串!
7.条件分支
7.1 比较操作符
= < <= == !=
7.2条件分支语法
If:
(缩进表示)
else:
(缩进表示)
7.3while循环(与C语言相通)
这里我们给大家的提示是:使用and逻辑操作符(优先级高于比较运算符)
- Python的and逻辑操作符可以将任意表达式连接在一起,并得到一个布尔类型的值。
7.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.向列表添加
① append( ) 向列表增加一个参数
member.append( )
member:列表对象
.:范围
append:属于对象的函数称为方法
② extend( ) 扩展列表 向列表增加一个列表
member. extend ([‘‘, ‘‘] )
③ insert(索引值,“
”)
索引值从0开始!!
4.从列表删除元素
①remove( )
member.remove(“ ”) 需知元素具体名
②del del member[ 索引值 ]
③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.列表的小伙伴(内置函数)
①count( ) 计算参数在列表中出现
②index ( , ,)
③revers 将最后的调到最前,倒数第二到前第二(原地翻转)
④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.加入:切片
六、字符串
015 字符串:格式化
1.Format参数:将指定的参数替换到列表指定位置
2.字符串独自享用的操作符
3.字符串转义字符含义
七、序列
列表、元组、字符串共同点
-都可以索引得到每一个元素
-默认索引值从零开始
-可以通过分片的方法得到一个范围内的元素集合
-有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
2.list()————可以把字符串和元组变成列表。
Tuple()————把一个可迭代的对象转换为元组
Str(obj)————把obj对象转换成字符串
Sum(iterable【,start=0】)返回序列iterable和可选参数start的总和
Sorted()使用方法等于list.sort()
Reversed()
Enumerate()
Zip()------返回由各个参数组成的
八、函数
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会自动创建一个名字一样的局部变量
8.递归
8.1谢尔宾斯三角形
女神自拍
8.2递归求阶乘的函数
:求五的阶乘
非递归版本:
factorial (n) ;
result=n
For lin range(1,n):
result*=I
Return result
Number=int(input(请输入一个正整数’) )
result=factorial (number)
Print( "%d的阶乘是: %d "% (number, result) )
递归版本:
Def factorial (n):
Ifn==1:
Return 1
Else:
Return n*factorial(n-1)
Number=int(input(请输入-个正整数: ') )
result= factorial (number)
printf ( “%d的阶乘是: %d” % (number, result) )
条件: 1.有调用函数自身的行为
2.有一个正确的发挥条件
8.3波那契数列.
用数学定义
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)
分治思想
8.4汉诺塔
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’)