分支和循环
- 分数判断等级
score = int (input('请输入一个分数:'))
if 100 >= score >= 90:
print('A')
elif 90 > score >= 80:
print('B')
elif 80 >= score >= 60:
print('C')
elif 60 > score >= 0:
print('D')
else:
print('输入错误!')
- python可以有效避免“悬挂else”
在c语言和python中,下面的代码有着不同的意思
if ( hi > 2 )
if ( hi > 7 )
printf ("好棒! 好棒!");
else
printf ("切~");
在 c 语言中 else 和第二个 if 匹配执行;
在 python 中 else 和第一个 if 匹配执行。
条件表达式(三元操作符)
语法: x if 条件 else y
x,y = 4,5
if x < y:
small = x
else:
small = y
可改进为:
small = x if x < y else y
断言 (assert)
当 assert 后边的条件为假的时候,程序自动崩溃并抛出 AssertionError 的异常。
利用它在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就派上用场了。
循环
- while 循环
- for 循环(计数器循环)
python 的 for 循环可以自动调用迭代器的next方法,可以自动捕获异常,结束循环。
语法:
for 目标 in 表达式
循环体
- range()
语法: range([start,] stop[,step=1])
中括号括起来的参数是可选的
step = 1 表示step的默认值是1,表示步长为1
表示:从start参数值开始到stop参数的值结束的数字序列。
默认从零开始
和for合作
range(2,9) 不包含9
- break & continue
for i in range(10):
if i%2 != 0:
print(i)
continue
i += 2
print(i)
第一次循环:i 从range(10)中取第一个数 0,由于除以2余数为0,执行 i += 2 ,输出 i 为 2;
第二次循环:i 从range(10)中取第二个数 1,除以2 余数不为0,输出 i;
以此类推,在这里 i += 2 的数值变化变化不影响 i 顺序取range(10) 的值。
列表
数组和列表的区别,数组要求放在一起的数据,数据类型一致,而列表不要求。在 python 中没有数组的概念。
创建列表
向列表中添加元素
- append()
在对象中把属于对象的函数称之为方法,append方法在这里是属于list2 这个列表对象的。
发现使用append一次性插入两个元素报错 - extend()
这里就要用到extend(),extend()是利用扩张的方式来扩展列表
依旧报错,extend()实际上也是需要一个参数,但是extend()方法可以同时将两个元素加入到列表中,extend()方法的原理是使用一个列表来扩展另一个列表,所以这里的参数应该是一个列表。
- insert()
append() 和 extend() 函数都是默认插入到末尾,如果想指定插入位置,这时就要使用insert()
由于list是从0开始的,所以新的元素插入到了位置1处
从列表中获取元素
列表索引值从0开始
- 交换元素
从列表删除元素
- remove()
只要知道元素的具体名字,不需要知道位置,就可以完成删除
- del
del 不是一个列表的方法,它是一个语句
del member
# 删除整个member表
- pop()
python 中的列表实际上是通过栈结构进行存储的,因此有pop() 这样一个弹栈的方法,pop() 方法是从列表中取出最后一个元素,并返回给你
也可以利用返回值对变量赋值
pop() 还可以添加参数
列表分片
- 一次性获取多个元素
从头开始或到结尾可以省略参数值 - 拷贝列表
列表的常用操作符
- 比较操作符
- 逻辑操作符
- 连接操作符
不要随便使用 “+” 来扩展列表,利用extend()更加规范
“+”两边对象的类型必须是一致的
- 重复操作符
- 成员关系操作符
查看元素是否在某个列表中
当查看元素是否存在列表中的列表里时,发现只能判断一层的列表中的元素
如何查看判断列表中的列表里的元素是否存在
- 访问列表中的列表的值
类似于c语言中访问数组
列表类型的内置函数
查看列表的内置函数
-
count()
参数在列表中的数量,计数
-
index()
参数在列表中的位置,索引
这时返回的是第一个出现 8 的位置
还可以定义一个范围,查看参数第一次出现的位置
这里是在 list6 中从第 3~9 个位置上找第一次出现 5 的位置 -
reverse()
列表翻转
-
sort()
sort(func,key,reverse)
func 指定排序的算法
key 和算法搭配的关键字
用指定的方式对列表的成员进行排序
reverse 默认取False
reverse取True,从大到小排序
-
复制列表
看起来是利用分片和直接赋值的方式复制出了两个新表list2和list3,那么他们有什么区别吗,先对list1排一下序
发现 list3 跟 list1 进行了变化,而 list2 没有变化,这是因为python的变量就是一个标签,在这里 list3 就是对 list1 表所对应的数据又加了一个 list3 的标签,实际上并没有新建一个表。
元组
元组和列表在使用上是非常相似的,但是元组是一种不可改变的类型,如果定义了一个元组,那么里面的元素不能再改变。
创建和访问元组tuple
- 创建元组、访问元组、对元组尽心切片复制
尝试修改元组的元素,报错
- 元组的标志性符号
那么创建一个只有单个元素的元组呢
- 数乘元组
数乘一个元组的时候,乘号就不再是乘号,而是一个重复操作符
更新和删除元组
元组的更新类比字符串,字符串同样不能修改,需要对现有的字符串进行切片,来构成新的字符串来达到更新字符串。
- 更新元组
- 删除元组中元素
通过切片的方式间接删除一个元素
可以利用del 删除元组,但是其实并没有必要,因为python和很多面向对象的语言一样,会隔段时间就检查是否有标签指向该元组,若没有,便会自动释放。
元组的常见操作符
- 拼接操作符
- 重复操作符
- 成员操作符
- 关系操作符
- 逻辑操作符
字符串(补充)
在python中并没有字符这个类型,字符即一个长度为1的字符串。
- 切片
- 索引字符
- 更新字符串
利用新的标签指向新的字符串,但是旧的字符串依然存在,不过没多久python的垃圾回收机制就会回收这个旧的字符串,释放空间。
列表、元组、字符串都是属于序列类型,一下三种操作类似 - 比较操作符
- 逻辑操作符
- 成员操作符
字符串方法
-
capitalize()
把字符串的第一个字符改为大写
-
casefold()
把整个字符串的所有字符改为小写
-
center(width)
将字符串居中,并使用空格填充至长度width的新字符串
-
cont(sub[,start[,end]])
返回sub在字符串里边出现的次数,start和end参数表示范围,可选。
区分大小写 -
encode(encoding=‘utf-8’,errors=‘strict’)
以encoding指定的编码格式对字符串进行编码。 -
endswith(sub[,start[,end]])
检查字符串是否以sub字符串结束,如果是返回True,否则返回False。start和end参数表示范围,可选。
-
expandtabs([tabsize=8])
把字符串中的tab符号(\t)转换为空格,如不指定参数,默认的空格数是tabsize=8
-
find(sub[,start[,end]])
检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选。
-
index(sub[,start[,end]])
跟find方法一样,不过如果sub不在string中会产生一个异常。
-
isalnum()
如果字符串至少有一个字符并且都是字母或数字(即可以全是字母、全是数字、字母和数字混合)则返回True,否则返回False。(是isalpha和isnumeric的结合) -
isalpha()
如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。 -
isnumeric()
如果字符串中只包含数字字符,则返回True,否则返回False。 -
isdecimal()
如果字符串只包含十进制数字则返回True,否则返回False。 -
isdigit()
如果字符串只包含数字则返回True,否则返回False。
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无
isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)
-
islower()
如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False。
-
isspace()
如果字符串中只包含空格,则返回True,否则返回False。 -
istitle()
如果字符串是标题化(所有单词都是以大写开始,其余字母均小写),则返回True,否则返回False。
-
isupper()
如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False。 -
join(sub)
以字符串作为分隔符,插入到sub中所有的字符之间。
-
ljust(width)
返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串。
-
lower()
转换字符串中所有大写字符为小写。 -
lstrip()
去掉字符串左边的所有空格。
-
partition(sub)
找到子字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包括sub则返回(‘原字符串’,’’,’’)。
-
replace(old,new[,count])
把字符串中的old子字符串替换成new子字符串,如果count指定,则替换不超过count次。
-
rfind(sub[,start[,end]])
类似于find()方法,不过是从右边开始查找。 -
rindex(sub[,start[,end]])
类似于index()方法,不过是从右边开始。 -
rjust(width)
返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串。 -
rpartition(sub)
类似于partition()方法,不过是从右边开始查找。 -
rstrip()
删除字符串末尾的空格。 -
split(sep=None, maxsplit=-1)
不带参数默认是以空格为分隔符切片字符串,如果maxsplit参数有设置,则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接的列表。
-
splitlines(([keepends]))
按照‘\n’分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行。
keepends – 换行符(’\r’, ‘\r\n’, \n’)
-
startswith(prefix[,start[,end]])
检查字符串是否以prefix开头,是则返回True,否则返回False。start和end参数可以指定范围检查,可选。 -
strip([chars])
删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选。
只能删掉前面和后面的‘s’,不影响在字符串中间的‘s’。 -
swapcase()
翻转字符串中的大小写。 -
title()
返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串
-
translate(table)
根据table的规则(可以由str.maketrans(‘a’,‘b’)定制)转换字符串中的字符。
-
upper()
转换字符串中的所有小写字符为大写。 -
zfill(width)
返回长度的为width的字符串,原字符串右对齐,前边用0填充。