Python 练习2
1、问答题 (5分) 列表和字符串的差异?
列表和字符串最大的区别就是:列表可以改变,字符串不可以改变。
字符串有三种表示形式,可以使用单引号,双引号和三引号来表示。
字符串比较大小,如果第一个字符相等,则继续往下比较,直到遇上第一个不同字符的比较结果。如果都相等,则看谁字符长谁就大。
列表比较大小,从第一个元素顺序开始比较,如果相等,则继续,返回第一个不相等元素比较的结果。如果所有元素比较均相等,则长的列表大,一样长则两列表相等。
2、问答题 (5分) remove 与 pop 、del 方法的异同?
del语句可以删除任何位置处的列表元素, 若知道某元素在列表中的位置则可使用del语句.
例:>>> a = [3, 2, 2, 1]
>>> del a[1]
>>> a
[3, 2, 1]
pop()可删除任意位置的元素并将其返回, 只需在括号内指定要删除元素的索引即可, 当括号内为空时则删除该列表最后一个元素并将其返回.
例1:>>> a = [3, 2, 1]
>>> a.pop(1)
2
>>> a
[3, 1]
remove()方法可根据值删除元素, 若不知所要删除元素在列表中的位置时可用remove()删除, 需要注意的是remove()所删除的元素是列表中第一个配对的值
>>> a = [3, 2, 1, 2]
>>> a.remove(2)
>>> a
[3, 1, 2]
3、问答题 (5分) append 与 extend 方法的异同?
append()方法是将后一组列表当成一个对象,整体加入前一组列表中
list_A = ['h', 'e','l','l','o']
list_B = ['w','o','r','l','d']
list_A.append(list_B)
print(list_A)
# ['h', 'e', 'l', 'l', 'o', ['w', 'o', 'r', 'l', 'd']]
extend()方法是将后一组列表依次加入,并为同一个整体
list_A = ['h', 'e','l','l','o']
list_B = ['w','o','r','l','d']
list_A.extend(list_B)
print(list_A)
# ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
append与extend方法均无返回值,修改的只是list_A的值,因此print(list_A.append(list_B))以及print(list_A.extend(list_B))输出值均为None
4、问答题 (5分) 字典和列表的异同?
相同:
①修改元素都可以用赋值语句*来完成:list1 = ['小明','小红','小刚','小美']
list1[1] = '小蓝'
print(list1)
dict1 = {'小明':'男'}
dict1['小明'] = '女'
print(dict1)
>>
['小明','小蓝','小刚','小美']
{'小明':'女'}
②列表和字典都支持任意嵌套(也就是列表和字典里可以放任何数据类型):
students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']] print(students[1][1])
scores = {
'第一组':{'小明':95,'小红':90,'小刚':100,'小美':85},
'第二组':{'小强':99,'小兰':89,'小伟':93,'小芳':88}
}
print(scores['第二组']['小芳'])
>>
小兰
不同:
①索引方式不同,列表根据偏移量索引,字典根据键索引,所以造成了列表是有顺序的,而字典是无序的:
students1 = ['小明','小红','小刚']
students2 = ['小刚','小明','小红']
print(students1 == students2)
scores1 = {'小明':95,'小红':90,'小刚':100}
scores2 = {'小刚':100,'小明':95,'小红':90}
print(scores1 == scores2)
>>
False
True
5、问答题 (5分) 试列举出字符串、列表、元组、字典每个常用的方法?
1、列表 list
列表(list):专门用于存储一串信息,列表用中括号[]定义,数据之间使用逗号,分隔
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]
1.1、len()
获取列表的长度
print(len(list1))
print(len(list2))
print(len(list3))
max()和min()获取列表中最大值和最小值
print("----list2------")
print(max(list2))
print(min(list2))
print("----list3------")
print(max(list3))
print(min(list3))
reverse()反向列表中元素
print("----list2------")
list2.reverse()
print(list2)
print("----list3------")
list3.reverse()
print(list3)
sort()对列表进行排序,从小到大
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 4, 5, 2, 3]
list3 = ["c", "d", "a", "b"]
print("----list2------")
list2.sort()
print(list2)
print("----list3------")
list3.sort()
print(list3)
clear()
print("----list2------")
list2.clear()
print(list2)
print("----list3------")
list3.clear()
print(list3)
remove()
删除指定值
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]
print(list2)
list2.remove(2)
print(list2)
insert()和pop()pop 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
insert 插入对象
list = ["a","b","c","d"]
list.pop()
print(list)
#指定索引位置进行插入
list.insert(2,"ppx")
print(list)
2、元组 tuple
tuple元组和列表类似,不同的地方是元组元素不能修改
tup1 = (1, 2, 5 ,3, 4, 2 ,4 ,2)
len() 获取元组的长度
print(len(tup1))
count()统计某元素出现的次数
print(tup1.count(2))
index()获取指定元素的最小索引
print(tup1.index(2))
3、字典
clear()清空字典
print(dict)
dict.clear()
print(dict)
keys()和values()keys以列表返回一个字典所有的键
keys = dict.keys()
for key in keys:
print(key)
values以列表返回字典中的所有值
values = dict.values()
for value in values:
print(value)
items()以列表返回可遍历的(键, 值) 元组数组
for k,v in dict.items():
print(k+"-"+v)
get()返回指定键的值,如果值不在字典中返回default值
print(dict.get("Alice"))
print(dict.get("afaawg"))
pop()删除指定键值
print(dict)
dict.pop("Beth")
4、字符串
replace()
字符串替换
str = "hello world hello ppx"
#将hello替换成皮皮虾
print(str.replace("hello","皮皮虾"))
split()字符串分割
str = "hello world hello ppx"
#使用空格进行分割
string = str.split(" ")
print(string)
strip()
自定义删除字符串两边的东西,默认是空格
lstrip()去除字符串左边空格 rstrip()去除字符串右边空格
str = " hello world hello ppx"
print(str)
#去除字符串两边的空格
string = str.strip()
print(string)
#去除字符串两边的x
s = str.strip("x")
print(s)
count()
str = " hello world hello ppx"
#默认全部查找
print(str.count("o"))
#自定义范围查找
print(str.count("o",0,20))
6、问答题 (5分) 多个if条件下是怎么执行的?
在单个 if 语句中检查多个条件。 这可以通过在单个语句中使用 'and' 或 'or' 或 BOTH 来完成
and = 为使其正常工作,提供的两个条件都应该为真。 如果第一个条件为假,编译器不会检查第二个条件。 如果第一个条件为真并且编译器移动到第二个,如果第二个条件为假,则将假返回给 if 语句。
or = 要使其正常工作,任一条件都必须为真。 编译器首先检查第一个条件,如果结果为真,则编译器运行分配的代码并且不评估第二个条件。 如果第一个条件结果为假,则编译器检查第二个条件,如果为真,则分配的代码将运行,但如果也失败,则将假返回给 if 语句
7、问答题 (10分) 编写代码完成以下题目:a.创建一个字典,在其中存储三条大河流及其流经的国家,即尼罗河(Nile):埃及(Egypt)、黄河(Yellow River):中国(China)、亚马逊河流(Amazon):巴西(Brazil)b.使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”;c.使用循环将该字典中每条河流的名字都打印出来;d.使用循环将该字典包含的每个国家的名字都打印出来。
# 河流
river = {
'尼罗河(Nile)': '埃及(Egypt)',
'黄河(Yellow River)' : '中国(China)',
'亚马逊河流(Amazon)' : '巴西(Brazil)',
}
for k, v in river.items():
print(k + " runs through " + v + ".")
for k in river.keys():
print(k)
for v in river.values():
print(v)
8、问答题 (10分) 使用while循环输出1 2 3 4 5 6 8 9 10
number = 1
while number < 11:
if number !=7:
print(number,end=' ')
number += 1
9、问答题 (10分) 写出实现“1-100求和”的语句
方法一:
one = 0
for i in range(1,101):
one = one+i
print(one)
二:
two = sum(range(101))
print(two)
三:
three = 0
i = 1
while i < 101:
three = three+i
i+=1
print(three)
10、问答题 (5分) 如何定义一个函数?
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号 : 起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
一般:
def 函数名(参数列表):
函数体
例如:
def hello() :
print("Hello World!")
hello()
11、问答题 (5分) 什么是正则表达式,在python中对应哪个模块?
“ 正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re。”
正则表达式:用来处理字符串,对字符串进行检索和替换,另外正则在python爬虫的应用也是相当广泛!
特点:灵活性、逻辑性和功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制
12、问答题 (5分) re.match函数与re.search方法的区别是什么?
match()函数只检测RE是不是在string的开始位置匹配,
search()会扫描整个string查找匹配
match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none