Python 程序设计习题

Python 程序设计习题,第1张

目录

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 个元素。



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


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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/571236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存