16道关于Python基础方面的练习题
1.有一个数据list of dict如下
a = [{"test1": "123456"},{"test2": "123456"},{"test3": "123456"},]
写入到本地一个txt文件,内容格式如下:
test1,123456test2,123456test3,123456
解题思路
1.打开文件
2.循环列表,提取字典
3.提取key,value
4.写入文件
答案
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"]
解题思路
1.a、b两个列表长度一致,获取长度
2.一个for循环,每次获取同下标值
3.字符串拼接,添加到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), 程序识别用户名和公司名后,将用户名和公司名输出到控制台。
要求:
1.校验输入内容是否符合规范(xx@polo.com), 如是进入下一步,如否则抛出提 示"incorrect email format"。注意必须以.com 结尾
2.可以循环“输入–输出判断结果”这整个过程
3.按字母 Q(不区分大小写)退出循环,结束程序
解题思路
1.固定以.com结尾,用正则匹配
2.以 @ 和 . 分割字符串
3.提取username和companyname
答案
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和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位数)
解题思路
1.int转字符串序列,获取到每一位数
2.调用math.pow函数求立方和
3.三个数字立方和相加
答案
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乘法表
解题思路
1.外层循环,获取被乘数
2.内层循环,获取乘数
答案
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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]
解题思路
1.非算法方案
- 内置排序函数
- 内置去重函数
- 内置列表函数
2.算法方案
- 冒泡算发排序
- 内置去重函数
- 内置列表函数
答案
# 非算法方案
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群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和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以下的完全数
解题思路
1.外循环6-1000以内的数字
2.内循环当前数字,得到所有整除数,并添加到一个列表
3.列表求和比较当前数字是否一致
答案
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
解题思路
1.循环列表
2.调用列表内置统计函数计算当前元素出现次数
3.出现次数模2是否不等于0
答案
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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") ➞ []
解题思路
- 字符串也是序列,可以循环获取每个字符
- 调用字符串内置函数判断是否大写
答案
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]
解题思路
1.外循环获取列表每个元素
2.内循环获取当前元素and 之前的所有元素,最后相加
3.为了不影响原列表的值,需要新创建一个列表来存放相加后的值
答案
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
答案
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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") ➞ ""
解题思路
1.先将指定范围的字母提取出来
2.Python里面,字符是可以直接比较大小的
3.通过直接比较,将在指定范围的字符 replace 成 #
答案
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")
结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!
Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者
https://www.bilibili.com/video/BV1LL4y1h7ny?share_source=copy_web
Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者
https://www.bilibili.com/video/BV1QZ4y1N7YA?share_source=copy_web
16道关于Python基础方面的练习题相关推荐
- 整理了100道关于Python3基础知识的练习题,记得收藏
100道关于Python3基础知识的练习题 实例1.数字组合 实例2.个税计算 实例3.完全平方数 实例4.这天第几天 实例5.三数排序 实例6.斐波那契数列 实例7.copy 实例8.九九乘法表 实 ...
- python基础练习(100)--练习题
一.python基础练习(100) 1.1 基础(格式或语法) """只记录复杂化的题目和思路""" 003.比较和赋值 --执行如下代码会 ...
- 《每天五分钟冲击python基础之字符串练习题》(七)
前言 相信通过上两节课的学习,同学们都已经能轻松掌握了,python字符串的入门和字符串的深入了,(ps:如果还没有学习的同学,请到这里先学习,再来看这节课喔!<每天五分钟冲击python基础之 ...
- python基础试题选择题_附带答案的15道经典python基础面试题
1. 闭包 定义:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个参数a, 内层函数依旧传入一个参数b, 内层函数使用a和b, 最后返回内层 ...
- 呕心沥血整理的python基础知识与练习题【你值得拥有!!!!】
一.基础语法 1.输入与输出(hellw word) # 国际化输出 print("hello word") print("word",end=" & ...
- 50道简单python函数题_Python练习题 函数设计(55~67)一
Demo55 ** Python 计算机程序设计中会经常用到十六进制数(第3章曾介绍过)(参见附录C中对数系的介 绍).将十进制数d转换为一个十六进制数就是找到满足下面条件的十六进制数: ** 程序编 ...
- Python基础 30章练习题
一.创建一个字符串,内容为'人生苦短,我用python,life is short' 1.统计字符串里面p的个数,l的个数, 2.反向查找s所在的位置, 3.将所有的小写单词换成大写 4.将所有的大写 ...
- python 基础班学习 练习题 2021-1-12
作业1 : 解答: import random class Guss_Num:def __init__(self,cus_num):self.cus_num = cus_num# def __rand ...
- python基础 while循环练习
这篇文章主要给大家分享的是5道关于python基础 while循环练习题,无论学习什么语言,练习都是必不可少的,下面文章的练习题挺精湛的,需要的朋友可以参考一下 1. 使用while循环输出1 2 3 ...
最新文章
- 直播回顾|结构光3D相机光机核心技术及3D成像性能分析
- codeforces 拼手速题2
- 如何攻克异地协作难题?看 Tower 的 72 个月远程工作实践
- 求教PHP+oracle的开发
- 微信小程序:生命周期
- 编辑器,webstorm,phpstorm系列配置方法汇总-笔记
- abp dapper mysql_ABP框架—后台:引入Abp.Dapper(10)
- 公司电脑可以做无盘系统吗?怎么优化速度?
- tomcat 原理与使用资料
- Git基础教程(三)
- 2020年TI杯大学生电子设计竞赛题A-无线运动传感节点
- Web漏洞扫描工具AWVS12使用详解
- ppt太大怎么变小,ppt如何压缩变小
- QuickTime 介绍 下载 安装(win7及以上版本)
- 【字节前端青训营】跟着月影学JavaScript——前端代码优化三大原则之各司其职,夜间模式小案例
- 常见监控摄像头专业术语(码流、分辨率、帧率)详解
- u盘文件不见但还占用容量文件办法?
- 爬虫07 爬取阿里旅行特价机票
- insert()用法
- PHP实现图片合并功能(根据群用户头像生成群logo图片)
热门文章
- 你不一定知道的几个前端小知识
- Java-小技巧-004-jdk时间,jdk8时间,joda,calendar,获取当前时间前一周、前一月、前一年的时间...
- 引入JQuery提示:Uncaught ReferenceError: $ is not defined
- Bootstrap3.0学习第十轮(下拉菜单、按钮组、按钮式下拉菜单)
- 业务服务管理究竟为何可望而不可及
- gentoo.tw的临时解决方法[转贴]
- linux下指数函数,用GeoGebra画指数函数图像、查看函数变化轨迹
- 【外贸人必看骗术】和中东客户做生意
- 华为云客户端_效果图云渲染已成趋势,云渲染如何选择?
- 【MM模块】Batch 批次管理1