Python 程序设计习题(4) —— 列表与元组

目录

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 题为例: watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS3JlbGlubl9CaW9z,size_20,color_FFFFFF,t_70,g_se,x_16

从观察 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 = [] 即可。但当里面只有一个元素的时候,二者就有区别了。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS3JlbGlubl9CaW9z,size_14,color_FFFFFF,t_70,g_se,x_16

 从图中我们可以看到,元组 tu 的类型是 int,与下面的元组 tup 仅有一个逗号的区别。也就是说,如果元组内只有一个元素,那么一定要在这个元素后面加上逗号,否则它就会被判断为整型。

元组只是不能进行修改,其他的地方和列表还是很相似的,比如拼接

189c3acd737f4bec9008c6da23266936.png

 如果我们不需要它,还可以将其删除

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS3JlbGlubl9CaW9z,size_16,color_FFFFFF,t_70,g_se,x_16

关于元组还有很多其他的知识,大家可以通过这个链接学习。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 个元素。


如果你有什么好的建议,或者说这篇博客对你有帮助的话,都可以在下方评论区留言,我有时间一定会看。

那么,本此的博客就到此为止了,下次再见!

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Krelinn Bios

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值