Python基础练习题合集
1.有一个数据list of dict如下:
a = [{"test1": "123456"},{"test2": "123456"},{"test3": "123456"},]
写入到本地一个txt文件,内容格式如下:
test1,123456test2,123456test3,123456
解题思路
- 打开文件
- 循环列表,提取字典
- 提取key,value
- 写入文件
答案
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
lists = [{"yoyo1": "111111"},{"yoyo2": "222222"},{"yoyo3": "333333"},
]with open("test.txt", "w+", encoding="utf-8") as f:for data in lists:for key, value in data.items():f.write(f"{key},{value}\n")
2.
a = [1, 2, 3, 4, 5]
b = ["a", "b", "c", "d", "e"]
如何得出c = [“a1”, “b2”, “c3”, “d4”, “e5”]
解题思路
- a、b两个列表长度一致,获取长度
- 一个for循环,每次获取同下标值
- 字符串拼接,添加到c列表
答案
a = [1, 2, 3, 4, 5]
b = ["a", "b", "c", "d", "e"]
c = []
# 方案一
for i in a:inx = a.index(i)d = b[inx]if d != -1:c.append(f"{d}{i}")
print(c)# 方案二
c = []
for i in range(0, len(a)):a1 = a[i]b1 = b[i]c.append(f"{b1}{a1}")
print(c)
3.写一个小程序:控制台输入邮箱地址(格式为 username@companyname.com
), 程序识别用户名和公司名后,将用户名和公司名输出到控制台。
要求:
- 校验输入内容是否符合规范(
xx@polo.com
), 如是进入下一步,如否则抛出提 示"incorrect email format"。注意必须以.com 结尾 - 可以循环“输入–输出判断结果”这整个过程
- 按字母 Q(不区分大小写)退出循环,结束程序
解题思路
- 固定以.com结尾,用正则匹配
- 以 @ 和 . 分割字符串
- 提取username和companyname
答案
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
while True:email = input("请输入邮箱:")if email.upper() == "Q":breakres = re.findall(".com$", email)if not res:print("incorrect email format")temp = email.split("@")name = temp[0]com = temp[1].split(".")[0]print(f"username:{name} , companyName:{com}")
4.如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3
,因此 153 就是一个水仙花数
那么问题来了,求1000以内的水仙花数(3位数)
解题思路
- int转字符串序列,获取到每一位数
- 调用math.pow函数求立方和
- 三个数字立方和相加
答案
lists = []
for i in range(101, 1000):i = str(i)i1, i2, i3 = int(i[0]), int(i[1]), int(i[2])if int(i) == int(math.pow(i1, 3) + math.pow(i2, 3) + math.pow(i3, 3)):lists.append(i)print(lists)
5.打印99乘法表
解题思路
- 外层循环,获取被乘数
- 内层循环,获取乘数
答案
for i in range(1, 10):strs = ""for j in range(1, i + 1):strs += f"{i}*{j}={i * j} "print(strs)
6.问题1.对列表a 中的数字从小到大排序,问题2.排序后去除重复的数字
a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
解题思路
非算法方案
- 内置排序函数
- 内置去重函数
- 内置列表函数
算法方案
- 冒泡算发排序
- 内置去重函数
- 内置列表函数
答案
# 非算法方案
a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 6, 8]
a = sorted(a)
a = set(a)
a = list(a)
print(a)# 算法方案
a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 6, 8]
for i in range(0, len(a) - 1):for j in range(0, len(a) - 1 - i):if a[j] > a[j + 1]:a[j], a[j + 1] = a[j + 1], a[j]a = set(a)
a = list(a)
print(a)
7.如果有一个列表a=[1,3,5,7,11]
问题:
1如何让它反转成[11,7,5,3,1]
2.取到奇数位值的数字,如[1,5,11]
解题思路
问题一:非算法方案
直接调用内置函数或切片
问题一:算法方案
- for循环,循环次数取列表长度的一半
- 头尾对称位置的值互换
问题二
切片,设置步长
答案
"""
如果有一个列表a=[1,3,5,7,11]
问题:1如何让它反转成[11,7,5,3,1]
"""
# 非算法方案一
a = [1, 3, 5, 7, 11]
a = a[::-1]
print(a)# 非算法方案二
a = [1, 3, 5, 7, 11]
a.reverse()
print(a)# 算法
a = [1, 3, 5, 7, 11]
lens = len(a)
for i in range(0, int(lens / 2)):a[i], a[lens - i - 1] = a[lens - i - 1], a[i]
print(a)"""
如果有一个列表a=[1,3,5,7,11]
问题:2.取到奇数位值的数字,如[1,5,11]
"""
a = [1, 3, 5, 7, 11]
a = a[::2]
print(a)
8.要求:判断数组元素是否对称。
例如[1,2,0,2,1],[1,2,3,3,2,1]
这样的都是对称数组用Python代码判断,是对称数组打印True,不是打印False,如:x = [1, "a", 0, "2", 0, "a", 1]
解题思路
- 循环取值,循环次数只需要列表长度的一半
- 每次取头尾对称下标的值比较
答案
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a, b, c = [1, 2, 0, 2, 1], [1, 2, 3, 3, 2, 1], [1, 2, 3, 4, 5]def duicheng(lists):lens = len(lists)flag = Truefor i in range(0, int(lens / 2)):if lists[i] != lists[lens - 1 - i]:flag = Falsebreakprint(flag)duicheng(a)
duicheng(b)
duicheng(c)
9.已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 开始的每一项都 等于其前两项的和,这是斐波那契数列。
求满足规律的 100 以内的所以数据
解题思路
- 初始化列表[1,1]
- 循环,从第三个下标开始的值都等于前一位的值+前前一位的值
- 若新的值已大于100则跳出循环
答案
a = [1, 1]
for i in range(2, 100):sum = a[i - 1] + a[i - 2]if sum > 100:breaka.append(sum)
print(a)
10.使用列表生成式语法,将列表中[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的数
解题思路
列表生成式 + 三元表达式
答案
a = [1, 3, -3, 4, -2, 8, -7, 6]
a = [x for x in a if x > 0]
print(a)
11.如果一个正整数等于除它本身之外其他所有除数之和,就称之为完全数。
例如:
6是完全数,* 因为6 = 1+2+3;下一个完全数是28 = 14+7+4+2+1。
求1000以下的完全数
解题思路
- 外循环6-1000以内的数字
- 内循环当前数字,得到所有整除数,并添加到一个列表
- 列表求和比较当前数字是否一致
答案
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
all = []
for num in range(6, 1001):lists = []for n in range(1, num):if num % n == 0:lists.append(n)if sum(lists) == num:all.append(num)
print(all)
12.请写一个函数find_odd,参数是1个列表,请返回该列表中出现奇数次的元素
比如
find_odd([1, 1, 2, -2, 5, 2, 4, 4, -1, -2, 5]) ➞ -1
find_odd([20, 1, 1, 2, 2, 3, 3, 5, 5, 4, 20, 4, 5]) ➞ 5
find_odd([10]) ➞ 10
解题思路
- 循环列表
- 调用列表内置统计函数计算当前元素出现次数
- 出现次数模2是否不等于0
答案
def find_odd(lists):res = []for i in lists:if lists.count(i) % 2 != 0:if i not in res:res.append(i)print(res)lists = [1, 1, 2, -2, 5, 2, 4, 4, -1, -2, 5]
list1 = [20, 1, 1, 2, 2, 3, 3, 5, 5, 4, 20, 4, 5]
list2 = [10, 1, 1, 1, 2, 2, 10, 5]
find_odd(lists)
find_odd(list1)
find_odd(list2)
13.写一个函数,该函数 参数为1个字符串,请分析并返回包含字符串中所有大写字母索引的有序列表。
比如
indexOfCaps("eDaBiT") ➞ [1, 3, 5]
indexOfCaps("eQuINoX") ➞ [1, 3, 4, 6]
indexOfCaps("determine") ➞ []
解题思路
- 字符串也是序列,可以循环获取每个字符
- 调用字符串内置函数判断是否大写
答案
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def indexOfCaps(strs):res = []num = 0for i in strs:if i.isupper():res.append(num)num += 1print(res)indexOfCaps("eDaBiT")
indexOfCaps("eQuINoX")
indexOfCaps("determine")
14.请写一个函数,该函数 参数为数字列表,请算出另外一个列表,里面每个元素依次是参数列表里面元素的累计和。
比如 参数为[1, 2, 3, 4]
结果计算方法为[1, 1 + 2, 1 + 2 + 3, 1 + 2 + 3 + 4]
返回结果就应该是[1, 3, 6, 10]
解题思路
- 外循环获取列表每个元素
- 内循环获取当前元素and 之前的所有元素,最后相加
- 为了不影响原列表的值,需要新创建一个列表来存放相加后的值
答案
def count_test(lists):res = []lens = len(lists)for i in range(0, lens):res.append(lists[i])for j in range(0, i):res[i] += lists[j]print(res)lists = [1, 2, 3, 4]
count_test(lists)
15.请写一个函数,该函数 参数为一个字符串,请验证该字符串是否是一个合法的电话号码,合法返回True,否则返回False
规则如下
1、该字符串必须全部都是数字。
2、该字符串长度为11位。
3、该字符必须以数字1开头。
比如
validate_phone("13423445566") ➞ True
validate_phone(".23rfs") ➞ False
解题思路
正则匹配,有则True,无则False
答案
def validate_phone(strs):res = re.findall("^1[0-9]{10}", strs)if res:return Truereturn Falseprint(validate_phone("13423445566"))
print(validate_phone(".23rfs"))
16.写一个函数replace,该函数参数是两个字符串,第一个参数给出一个源,第二个参数是指定范围。
要求该函数将 第一个参数里面的字符串中 落在第二个参数指定范围内的字符串替换为 # 号
比如
replace("abcdef", "c-e") ➞ "ab###f"
replace("rattle", "r-z") ➞ "#a##le"
replace("microscopic", "i-i") ➞ "m#croscop#c"
replace("", "a-z") ➞ ""
解题思路
- 先将指定范围的字母提取出来
- Python里面,字符是可以直接比较大小的
- 通过直接比较,将在指定范围的字符 replace 成 #
答案
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def replace(strs, round):start, end = round.split("-")for i in strs:if i >= start and i <= end:strs = strs.replace(i, "#")print(strs)replace("abcdef", "c-e")
replace("rattle", "r-z")
replace("microscopic", "i-i")
replace("", "a-z")
17.写一个函数alphabet_index,该函数参数是1个字符串,要求该函数返回一个新字符串,里面是 参数字符串中每个字母依次对应的 数字。如果是非字母,则忽略它
字母"a" 和"A" 都对应 1, "b"和"B"都对应2, "c"和"C"对应3, 依次类推
比如
alphabet_index("Wow, does that work?")
➞ "23 15 23 4 15 5 19 20 8 1 20 23 15 18 11"alphabet_index("The river stole the gods.")
➞ "20 8 5 18 9 22 5 18 19 20 15 12 5 20 8 5 7 15 4 19"alphabet_index("We have a lot of rain in June.")
➞ "23 5 8 1 22 5 1 12 15 20 15 6 18 1 9 14 9 14 10 21 14 5"
解题思路
- 将字符串统一为大写字母
- 需要设置一个对比值
- 大写A的ASCII码为65,但A对应1,所以设置一个对比值为64
- 循环字符串,如果是字母则换算出它的ASCII码,再减去对比值
答案
def alphabet_index(strs):strs = strs.upper()temp = 64res = ""for i in strs:if i.isalpha():res += str(ord(i) - temp) + " "print(res)alphabet_index("Wow, does that work?")
alphabet_index("The river stole the gods.")
alphabet_index("We have a lot of rain in June.")
Python基础练习题合集相关推荐
- python基础语法合集-Python基础语法合集.zip
[实例简介]精心整理的Python基础语法合集,变量,循环,输入输出等等都有,主要是知道概念和怎么用的 如果打开文件后有文字变成符号的,先把字体改为宋体就正常了 [实例截图] [核心代码] 目录 了解 ...
- python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串
列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...
- python基础语法合集-Python基础语法介绍
元组 基本概念.特性顺序存储相同/不同类型的元素 定义:使用()将元素括起来,元素之间用","括开 特性:不可变,不支持添加,修改,删除等操作 查询:通过下标查询元组指定位置的元素 ...
- python基础语法合集-python常用语法合集
判断语句 (使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块) if condition_1: statement_block_1 elif condition_2: statement_b ...
- Python基础练习题:杂乱无章的页面列表【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
Python基础练习题:杂乱无章的页面列表[难度:1级]: 你得到了一本古老的书,不幸的是有几页错误的位置,幸运的是你的计算机有一个从"1"到"n"的顺序的每个 ...
- Python编译环境合集
Python是数学建模和数据分析的重要工具之一.在运用Python前,构建一个完备的环境是非常重要的步骤.今天,我们就为大家介绍一下Python的常用环境~ [Python常用环境合集] 01.自带的 ...
- CTF 六大方向基础工具合集
本文中提到的所有工具在ctf部落中均有,加入方式见文末. CTF 六大方向基础工具合集 今天来为大家分享CTF 六大方向基础工具简介集合. 一.MISC方向 杂项往往是不能被归到其他类别里的题目,所以 ...
- 这些Python基础练习题你会几个?
在人工智能大火的当今,Python 作为人工智能时代的首选语言已经越来越收到追捧:但是许多非科班.零基础的小伙伴常常苦于没有合适的入门 Python 的教程而感到苦恼:本人是一名资深Python开发, ...
- 【Python常用函数合集】clip函数、range函数等
你应该听说过,应用Python,可以让你处理一天的重复工作量,缩短到几分钟甚至更短.从此解放上班时间,研究更多更有效率的工作方法.进一步提升工作效率,让工作更出彩.这不是广告,这是实锤图片. 本 ...
最新文章
- mysql2000 sp4_SQL Server 2000 (SP4)笔记整理(二):数据库表
- POJ - 2142 The Balance(扩展欧几里得)
- python3爬虫初探(五)之从爬取到保存
- linux系统键盘记录器,可截获到 QQ 密码 键盘记录器源码
- 【转】构建微服务架构的最佳实践2/3
- 使用docker环境编译驱动
- asp.net 事件调用事件问题?
- MASK RCNN在tensorflow 2.5中运行
- 国内ERP技术公司综合
- ASUS AURA无法启动问题
- 《免费下载论文的网站》
- 回想让你最有成就感的bug是什么?你是如何发现这个bug的?
- 大二暑假java培训第七天
- 字节跳动裁员不发年终奖致员工与HR薅头发互殴?字节回应来了
- super关键字的用法
- 2021年全球指拨开关收入大约420.8百万美元,预计2028年达到519.8百万美元
- 体力劳动?脑力劳动?
- 可以查询天气的日历——QT制作第一个自己的小软件
- 微软WebCast(视频教材下载工具)上千视频下载
- 华东交大计算机绘图,华东交通大学理工学院本科毕业设计(论文)新手册.doc
热门文章
- centos7 系统缓存清理
- iOS 开发各种传值
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
- [CareerCup] 14.4 Templates Java模板
- mysql 让一个存储过程定时作业的代码(转)
- C++默认构造函数的一点说明
- Type对象获得泛型类型的两个扩展方法
- 计算机应用技术国外现状,浅析计算机应用技术的现状及发展趋势
- 【FI学习笔记】客户发票收款清账
- SAP ABAP Debug 小技巧