目录标题
1.数据类型篇
1.1 基本数据类型
1.1.1 逻辑推理练习(类型转换)
不运行程序,说出下面程序的执行结果
4.0 == 4
"4.0" == 4
bool("1")
bool("0")
str(32)
int(6.26)
float(32)
float("3.21")
int("434")
int("3.42")
bool(-1)
bool("")
bool(0)
"wrqq" > "acd"
"ttt" == "ttt "
"sd"*3
"wer" + "2322"
答案如下
true
false
true
true
"32"
6
32.0
3.21
434
会报错 # 标记
true
false
false
true
false # 标记
sdsdsd
wer2322
0 , 空字符串, None在条件判断语句中等价于False, 其他数值都等价于True
字符串"3.42"可以转成float类型数据3.42, 3.42可以转成int类型数据3,但是字符串"3.42"却不可以直接使用int函数转成3
1.1.2 数据类型考察
请说出下面表达式结果的类型
"True"
"Flase"
4 >= 5
5
5.0
True
答案如下
字符串
字符串
bool
int
float
bool
1.1.3 交互式解释器练习
请在交互式解释器里回答下面的题目
3的5次方
7对2求模
9除5,要求有小数部分
9除5,要求没有小数部分
用程序计算根号16,也就是16的2分之一次方
答案如下
print(3 ** 5)
print(7%2)
print(9/5)
print(9//5)
import math
print(math.sqrt(16))
除法中,希望结果有小数部分时用/, 希望只保留整数部分时用 //
1.2 字符串练习题(基本数据类型)
1.2.1 字符串内置方法练习
在交互式解释器中完成下列题目
计算字符串 "cd" 在 字符串 "abcd"中出现的位置
字符串 "a,b,c,d" ,请用逗号分割字符串
"{name}喜欢{fruit}".format(name="李雷") 执行会出错,请修改代码让其正确执行
string = "Python is good", 请将字符串里的Python替换成 python,并计算字母O出现了几次,和该字符串的长度
有一个字符串 string = "python修炼第一期.html",请写程序从这个字符串里获得.html前面的部分,要用尽可能多的方式来做这个事情
"this is a book",请将字符串里的book替换成apple
"this is a book", 请用程序判断该字符串是否以this开头
"this is a book", 请用程序判断该字符串是否以apple结尾
"This IS a book", 请将字符串里的大写字符转成小写字符
"This IS a book", 请将字符串里的小写字符,转成大写字符
"This IS a book", 请将每个单词的首字母转成大写
"this is a book\n", 字符串的末尾有一个回车符,请将其删除
str1 = "this is a book"
str2 = "这是一本书"
请将str1,str2两个字符串用3种方法进行拼接
答案如下
print("a,b,c,d".split(","))
print("{name}喜欢{fruit}".format(name="李雷", fruit="apple"))
print("Python is good".replace("Python", "python"))
print("Python is good".count("o"))
print(len("python is good"))
string = "python修炼第一期.html"
print(string[0:11]) # print(string[0:-5])
print(string[0:(string.find(".html"))])
print("this is a book".startswith("this"))
print("this is a book".endswith("book"))
print("This IS a book".lower())
print("This IS a book".upper())
print("This IS a book".title())
print("this is a book\n".strip())
print(str1 + str2)
print("%s%s" % (str1, str2))
print("{}{}".format(str1, str2))
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
1.2.2 字符串切片(字符串)
口述回答下面代码的执行结果
num_str = "0123456789"
print(num_str[2:6])
print(num_str[2:])
print(num_str[:6])
print(num_str[:])
print(num_str[::2])
print(num_str[1::2])
print(num_str[-1])
print(num_str[2:-1])
print(num_str[-2:])
print(num_str[::-1])
答案如下
2345
23456789
012345
0123456789
02468
13579
9
2345678
89
9876543210
1.3 列表练习题(组合数据类型)
1.3.1 列表基础考察
已知一个列表 list = [1,2,3,4,5]
求列表的长度
判断6 是否在列表中
lst + [6, 7, 8] 的结果是什么?
lst*2 的结果是什么
列表里元素的最大值是多少
列表里元素的最小值是多少
列表里所有元素的和是多少
在索引1的后面新增一个的元素10
在列表的末尾新增一个元素20
答案如下
list = [1, 2, 3, 4, 5]
print(len(list))
print(6 in list)
print(list + [6, 7, 8])
print(list * 2)
print(max(list))
print(min(list))
print(sum(list))
list.insert(1, 10)
print(list)
list.append(20)
print(list)
1.3.2 修改列表
list = [1, [4, 6], True] 请将列表里所有数字修改成原来的两倍
list = [1, [4, 6], True]
list[0] = 2
list[1][0] = 8
list[1][1] = 12
print(list)
用函数实现
def double_list(lst):
for index, item in enumerate(lst):
if isinstance(item, bool):
continue
if isinstance(item, (int, float)):
lst[index] *= 2
if isinstance(item, list):
double_list(item)
if __name__ == '__main__':
lst = [1, [4, 6], True]
double_list(lst)
print(lst)
答案如下
1.3.4 合并列表
lst = [1,2,3]
lst2 = [4,5,6]
答案如下
list = [1, 2, 3]
print(id(list)) # 查看地址
list2 = [4, 5, 6]
list.extend(list2) # 合并
print(list)
print(id(list))
list的内存地址都没有发生变化,只是列表里的内容发生了变化
1.3.5 合并字符串
str1 = "1,2,3"
str2 = "4,5,6"
不使用 + 号运算符,请将str2合并到str1的末尾,并思考,这个过程中,是否产生了新的字符串
答案如下
str1 = "1,2,3"
print(id(str1)) # 查看内存地址
str2 = "4,5,6"
str1 += str2 # 拼接
print(str1)
print(id(str1))
合并前后的内存地址是不一样
1.3.6 统计练习
列表lst 内容如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
请写程序完成下列题目
找出列表里的最大值
找出列表里的最小值
找出列表里最大值的个数
计算列表里所有元素的和
计算列表里元素的平均值
计算列表的长度
找出元素6在列表中的索引
答案如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
print(max(lst))
print(min(lst))
print(lst.count(max(lst)))
print(sum(lst))
print(sum(lst)/float(len(lst)))
print(len(lst))
print(lst.index(6))
下面的题目不允许写代码,仅凭思考来回答
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
lst[2:4] 的值是什么
lst[1: -3]的值是什么
lst[-5]的值是什么
lst[:-4] 的值是什么
lst[-4:] 的值是什么
答案如下
print(lst[2:4])
print(lst[1: -3])
print(lst[-5])
print(lst[:-4])
print(lst[-4])
1.3.7 列表操作练习
列表lst 内容如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
请写程序完成下列操作
在列表的末尾增加元素15
在列表的中间位置插入元素20
将列表[2, 5, 6]合并到lst中
移除列表中索引为3的元素
翻转列表里的所有元素
对列表里的元素进行排序,从小到大一次,从大到小一次
答案如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
lst.append(15)
print(lst)
lst.insert(len(lst) // 2, 20)
print(lst)
lst.extend([2, 5, 6])
print(lst)
lst.remove(lst[3])
print(lst)
lst.reverse()
print(lst)
lst.sort() # 升序
print(lst)
lst.sort(reverse=True)
print(lst)
1.3.8 复杂列表练习
1.4 字典练习题(组合数据类型)
1.4.1 字典基本操作
字典内容如下
dic = {
'python': 95,
'java': 99,
'c': 100
}
用程序解答下面的题目
字典的长度是多少
请修改'java' 这个key对应的value值为98
删除 c 这个key
增加一个key-value对,key值为 php, value是90
获取所有的key值,存储在列表里
获取所有的value值,存储在列表里
判断 javascript 是否在字典中
获得字典里所有value 的和
获取字典里最大的value
获取字典里最小的value
字典 dic1 = {'php': 97}, 将dic1的数据更新到dic中
答案如下
print(len(dic))
dic['java'] = 98
print(dic)
del (dic["c"])
print(dic)
dic['phd'] = 90
print(dic)
lst1 = list(dic.keys())
print(lst1)
lst2 = list(dic.values())
print(lst2)
print("javascript" in dic)
print(sum(dic.values()))
print(max(dic.values()))
print(min(dic.values()))
dic1 = {'php': 97}
dic.update(dic1)
print(dic)
1.4.2 字典应用(买水果)
小明去超市购买水果,账单如下
苹果 32.8
香蕉 22
葡萄 15.5
请将上面的数据存储到字典里,可以根据水果名称查询购买这个水果的费用
答案如下
info = {
'苹果':32.8,
'香蕉': 22,
'葡萄': 15.5
}
1.4.3 字典应用(买水果2)
小明,小刚去超市里购买水果
小明购买了苹果,草莓,香蕉,一共花了89块钱,,小刚购买了葡萄,橘子,樱桃,一共花了87块钱
请从上面的描述中提取数据,存储到字典中,可以根据姓名获取这个人购买的水果种类和总费用。
答案如下
info = {
"小明": {
"fruits": ["苹果", "草莓", "香蕉"],
"money": 89
},
"小岗": {
"fruits": ["葡萄", "橘子", "樱桃"],
"money": 87
}
}
1.5 集合练习题(组合数据类型)
1.5.1集合间的运算
lst1 = [1, 2, 3, 5, 6, 3, 2]
lst2 = [2, 5, 7, 9]
哪些整数既在lst1中,也在lst2中
哪些整数在lst1中,不在lst2中
两个列表一共有哪些整数
答案如下
lst1 = [1, 2, 3, 5, 6, 3, 2]
lst2 = [2, 5, 7, 9]
set1 = set(lst1)
set2 = set(lst2)
# 哪些整数既在lst1中,也在lst2中
print(set1.intersection(set2))
# 哪些整数在lst1中,不在lst2中
print(set1.difference(set2))
# 两个列表一共有哪些整数
print(set1.union(set2))
1.6 元组练习题(组合数据类型)
1.6.1 元组概念考察
写出下面代码的执行结果和最终结果的类型
(1, 2)*2
(1, )*2
(1)*2
答案如下
print((1, 2) * 2)
print((1,) * 2)
print((1) * 2)
第一题应该没有异议,关键是第2题和第3题,元组里只有一个数据时,必须有逗号,如果没有逗号,就变成了第3题的形式,第3题本质上是1*2,那对小括号就如同我们小学学过的小括号一样,只是为了体现运算优先级而已。
当元组只有一个数据时,如果不省略了逗号,那么小括号的作用就不再是表示元组,而是表示运算优先级