目录
1. Python 习题部分
2. Python 习题讲解
列表
元组
其他
1. Python 习题部分
要想学习一门语言,便少不了练习。
故附上部分 Python 习题,供大家学习参考。
如有错误之处,还望指正!
1. 二年级一班举行了数学考试,学生小明90分,小红85分,小强95分。现已将学生姓名存放在student元组中,成绩存放在score元组中。请按照XX同学的数学成绩为XX的格式输出每位同学的成绩。
student = ("小明", "小红", "小强")
score = (90, 85, 95)
for i in range(3):
print(f"{student[i]}的数学成绩为{score[i]}")
2. 编程输出100以内的素数,并保存在元组number中。
number = []
for i in range(2, 100):
for j in range(2, i):
if i % j == 0:
break
else:
number.append(i)
print(tuple(number))
3. 找出列表list1和list2中的不同元素,并组合成新的列表list3,最后输出结果。
list1 = [11, 22, 33, 44, 99]
list2 = [22, 33, 55, 66, 77, 88]
list3 = []
for i in list1:
if i not in list2:
list3.append(i)
print(list3)
4.编写程序,实现分段函数的计算,分段函数的取值如下表所示。要求:可连续输入5次,每次的结果都将添加到列表中。
自变量x | 因变量y |
x<0 | 0 |
0≤x<5 | x |
5≤x<10 | 3x-5 |
10≤x<20 | 0.5x-2 |
x≥20 | 0 |
list1 = []
for i in range(5):
x = eval(input('请输入 x 的值:'))
if x < 0:
y = 0
elif 0 <= x < 5:
y = x
elif 5 <= x < 10:
y = 3*x - 5
elif 10 <= x < 20:
y = 0.5*x - 2
elif x >= 20:
y = 0
list1.append(y)
print(list1)
5.一个正整数,如果它能被7整除,或者它的十进制表示法中某一位的数字为7,则称其为与7相关的数。现在请将所有小于n(n<100)的与7相关的正整数从小到大排列,并输出其中第三位到第八位的部分。
list1 = []
for i in range(100):
if i % 7 == 0 or i % 10 == 7 or i // 10 == 7:
list1.append(i)
print(list1[2:9])
6.现有列表cities存放城市名称,但内容存在些许错误,请按照要求进行修改。要求:一、在北京和广州中间插入上海;二、删除不属于中国的城市;三、将省份名称改为其省会城市;四、在末尾加上台北。cities = ["北京", "广州", "波士顿", "深圳", "湖南", "成都", "洛杉矶", "武汉", "浙江", "香港", "澳门"]
cities = ["北京", "广州", "波士顿", "深圳", "湖南", "成都", "洛杉矶", "武汉", "浙江", "香港", "澳门"]
cities.insert(1, "上海")
cities[4] = "长沙"
cities[cities.index("浙江")] = "杭州"
for i in cities:
if len(i) == 3:
cities.pop(cities.index(i))
cities.append("台北")
print(cities)
7.约瑟夫环是一个很有意思的算法。已知有41个人围坐在一张圆桌周围,从第1个人开始报数,数到3的那个人出列,他的下一个人又从1开始报数,数到3的那个人又出列;一次规律重复下去,直到圆桌周围的人数少于3时结束,输出剩下的人的序号。提示:41个人围成一个圈可以用一个列表来表示。
lst = list(range(41))
while len(lst) >= 3:
lst = lst[3:] + lst[:2]
print(lst)
8.微软产品一般都有一个25位的、用于区分每份微软产品的产品序列号。产品序列号由5组被“-”分隔开,由字母、数字混合编制的字符串组成,每组由5个字符串组成。例如:3CVX3-BJWXM-6HCYX-QEK9R-CVG4R,每个字符取自以下24个字母及数字之中的一个:BCEFGHJKMPQTVWXY2346789.编程;模拟生成微软产品序列号。(random.choice)
import random
char = 'BCEFGHJKMPQTVWXY2346789'
lst = []
for i in range(5):
ls = random.sample(char,5)
s = ''.join(ls)
lst.append(s)
key = '-'.join(lst)
print(key)
2. Python 习题讲解
本次习题主要考验对列表和元组的掌握。
列表
以第 6 题为例:
从观察 cities 我们可以发现列表的特征是两端有 [ ] ,内部用 , 分隔开众多元素。
虽然本题的元素都是字符串,但列表的元素还可以有很多类型——如数字、元组、列表、字典。
列表里面的元素是可以通过索引号获取的,这一点和字符串没有区别。因此我们可以通过索引号来对列表元素进行访问、修改。
关于列表的函数&方法还有很多,大家可以通过这个链接去学习。https://www.runoob.com/python/python-lists.html
下面我们现在来看题目要求。
一、在北京与广州之间插入上海。
cities.insert(1, "上海")
这里我们使用 .insert 对列表进行插入操作,将指定对象插入列表的指定位置。因为上海在北京后面,所以这里索引号为 1
二、删除不属于中国的城市。
for i in cities:
if len(i) == 3:
cities.pop(cities.index(i))
本题内的所有其他城市都为三个字符,因此循环遍历列表找出长度为3的元素使用 pop() 函数删除即可。pop() 函数可移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
这里我们由于不清楚字符的索引号,因此使用 index() 来获取,再将获取到的索引号放入 pop()函数进行删除。
三、将省份名称改为其省会城市。
本题共有两处需要进行替换,因此这里我使用了两种不同的方法。
cities[4] = "长沙"
cities[cities.index("浙江")] = "杭州"
我们通过 湖南的索引号4 ,将湖南改成了长沙。通过 index() 的方法 获取 浙江的索引号,将浙江改为了杭州。前者直接替换,后者先获取索引号再进行替换。
对于这道题,使用 index() 或许显得有些多余,但当我们不清楚某元素的具体位置时,index() 将会是很好用的工具。
四、在末尾加上台北。
cities.append("台北")
使用 append() 方法可以在列表末尾添加新的对象。需要添加什么就在括号里填入什么。
元组
以第 1 题为例:
student = ("小明", "小红", "小强")
score = (90, 85, 95)
for i in range(3):
print(f"{student[i]}的数学成绩为{score[i]}")
通过观察可以得知元组的特征是两端有 ( ),内部用 , 分隔开众多元素。
元组和列表是很相似的,都可以利用索引号对里面的元素进行访问,区别在于元组的元素不可以修改。元组创建时是什么样,就是什么样。因此我们可以把不需要修改的内容存放在元组中。
创建空元组和空列表,只需要 xx = () 、 xx = []即可。但当里面只有一个元素的时候,二者就有区别了。
tu 的类型是 int,与下面的元组 tup 仅有一个逗号的区别。也就是说,如果元组内只有一个元素,那么一定要在这个元素后面加上逗号,否则它就会被判断为整型。
元组只是不能进行修改,其他的地方和列表还是很相似的,比如拼接。
删除。
关于元组还有很多其他的知识,大家可以通过这个链接学习。https://www.runoob.com/python3/python3-tuple.html
其他
join():将序列中的元素以指定的字符连接生成一个新的字符串。key = '-'.join(lst) 便是用 - 符号来连接。
序列指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。
在 Python 中,序列类型包括字符串、列表、元组、集合和字典。这些序列的操作基本上通用,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。
random():可以返回随机生成的在 [0,1) 范围内一个实数。这里我们使用 import函数将其导入。
注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
random模块的详细内容在此,请点击链接学习。https://www.runoob.com/python/func-number-random.html这里我们使用了 random 模块里的 sample()方法,该方法可以从指定序列中随机截取指定长度的片段。random.sample(char,5) 便是随机截取 char 里面的 5 个元素。
如果你有什么好的建议,或者说这篇博客对你有帮助的话,都可以在下方评论区留言,我有时间一定会看。
那么,本此的博客就到此为止了,下次再见!