编程小白学做题:Python 的经典编程题及详解,附代码和注释(六)
off999 2025-08-03 07:30 32 浏览 0 评论
适合 Python 3 + 的 6 道编程练习题(附详解)
1、打印杨辉三角的前 n 行
题目描述:给定正整数n,打印杨辉三角的前n行(每个数等于它上方两数之和,每行首尾为 1)。
编写思路:
- 杨辉三角的第i行有i+1个元素。
- 每行首尾元素为 1,中间元素由上一行相邻两数相加得到。
示例代码(Python 3+):
python
def print_pascal_triangle(n):
triangle = []
for i in range(n):
row = [1] * (i + 1)
# 初始化当前行为全1
# 计算中间元素(从第2行开始)
for j in range(1, i):
row[j] = triangle[i-1][j-1] + triangle[i-1][j]
triangle.append(row)
print(' '.join(map(str, row)).center(n*4))
# 居中对齐
# 测试用例
print_pascal_triangle(5)
# 输出:
# 1
# 1 1
# 1 2 1
# 1 3 3 1
# 1 4 6 4 1
代码注释:
- row = [1] * (i + 1):初始化当前行,长度为i+1,元素全为 1。
- row[j] = triangle[i-1][j-1] + triangle[i-1][j]:计算中间元素的值。
- ' '.join(map(str, row)).center(n*4):将行转换为字符串并居中对齐,美观打印。
2、生成指定范围内的随机整数列表
题目描述:生成包含n个指定范围[a, b]内随机整数的列表。
编写思路:
- 使用 Python 3 的random模块生成随机数。
- 循环n次生成随机数并添加到列表。
示例代码(Python 3+):
python
import random
def generate_random_list(n, a, b):
# 设置随机数种子(可选,用于结果可复现)
# random.seed(42)
return [random.randint(a, b) for _ in range(n)]
# 测试用例
print(generate_random_list(5, 1, 10))
# 输出: 例如 [3, 7, 2, 9, 5]
代码注释:
- random.randint(a, b):生成闭区间[a, b]内的随机整数。
- 列表推导式[... for _ in range(n)]:简洁生成n个随机数。
3、检查列表中是否存在重复元素
题目描述:判断列表中是否存在重复元素(如[1, 2, 2]存在重复,[1, 2, 3]不存在)。
编写思路:
- 利用集合的唯一性特性。
- 比较列表长度与集合长度是否一致。
示例代码(Python 3+):
python
def has_duplicates(lst):
return len(lst) != len(set(lst))
# 测试用例
print(has_duplicates([1, 2, 3]))
# 输出: False
print(has_duplicates([1, 2, 2]))
# 输出: True
代码注释:
- set(lst):将列表转换为集合,自动去重。
- len(lst) != len(set(lst)):若长度不同,说明存在重复元素。
4、统计列表中正数和负数的个数
题目描述:给定数字列表,统计其中正数(>0)和负数(<0)的个数。
编写思路:
- 遍历列表,判断每个元素的正负性。
- 使用计数器变量分别统计正数和负数的数量。
示例代码(Python 3+):
python
def count_positive_negative(lst):
positive_count = 0
negative_count = 0
for num in lst:
if num > 0:
positive_count += 1
elif num < 0:
negative_count += 1
return positive_count, negative_count
# 测试用例
lst = [1, -2, 3, -4, 0, 5]
pos, neg = count_positive_negative(lst)
print(f"正数: {pos}, 负数: {neg}")
# 输出: 正数: 3, 负数: 2
代码注释:
- num > 0和num < 0:分别判断正数和负数,0 不参与统计。
- 返回元组(positive_count, negative_count):一次性返回两个统计结果。
5、将字符串按指定字符分割成列表
题目描述:将字符串按指定分隔符分割为子字符串列表(如"a,b,c"按,分割为["a", "b", "c"])。
编写思路:
- 使用 Python 3 的字符串split()方法。
- 处理分隔符不存在的情况。
示例代码(Python 3+):
python
def split_string(s, delimiter):
return s.split(delimiter)
# 测试用例
print(split_string("apple,banana,cherry", ","))
# 输出: ['apple', 'banana', 'cherry']
print(split_string("hello world", " "))
# 输出: ['hello', 'world']
print(split_string("abc", ","))
# 输出: ['abc'](分隔符不存在时返回原字符串作为唯一元素)
代码注释:
- s.split(delimiter):Python 3 字符串方法,按指定分隔符分割字符串。
- 分隔符不存在时,返回包含原字符串的单元素列表。
6、移除列表中的空字符串元素
题目描述:移除列表中的所有空字符串""(如["a", "", "b", ""]变为["a", "b"])。
编写思路:
- 遍历列表,过滤掉空字符串。
- 使用列表推导式或filter()函数实现。
示例代码(Python 3+):
python
def remove_empty_strings(lst):
# 方法1:列表推导式(推荐)
return [s for s in lst if s != ""]
# 方法2:使用filter()函数
# return list(filter(lambda x: x != "", lst))
# 测试用例
print(remove_empty_strings(["a", "", "b", ""]))
# 输出: ['a', 'b']
print(remove_empty_strings(["", "", ""]))
# 输出: []
代码注释:
- [s for s in lst if s != ""]:列表推导式,简洁高效。
- filter(lambda x: x != "", lst):使用高阶函数filter,返回迭代器需转换为列表。
学习建议(Python 3 + 进阶)
- 内置函数优先:split()、join()、set()、filter()等内置函数能大幅简化代码,优先考虑使用。
- 随机数生成:Python 3 的random模块提供多种随机数生成方法(如randint、random、choices),按需选择。
- 条件表达式:三元表达式a if condition else b可简化单行条件判断(如示例中row[j]的赋值)。
- 字符串处理:字符串方法(如strip()、startswith()、endswith())是 Python 3 的强项,熟练掌握能提升效率。
这些 Python 3+ 练习题是否帮你巩固了基础?点赞收藏支持一下吧!后续会更新更多 Python 3 +练习题,关注我就能第一时间看到~你还想了解哪些 Python 3+ 特有的编程题目?欢迎在评论区留言!
相关推荐
- wifi加密方式怎么设置(wifi网络加密怎么设置)
-
若你想将自己的无线网改成加密的,可以按照以下步骤操作:1.打开你的路由器管理界面。一般来说,在浏览器地址栏输入“192.168.1.1”或“192.168.0.1”,然后输入用户名和密码登录就可以打...
- sql数据库自学(数据库入门必看——《sql基础教程》)
-
SQLServer数据库基础知识:1.数据库是由数据组成的,这些数据可以被组织成有序的数据结构,以支持特定的应用程序。2.数据库管理系统(DBMS)是一种软件工具,用于创建、管理和操作数据库。...
- 无线网连接不可上网怎么回事
-
可能有几下几方面原因:1、无线路由器网络参数设置错误,无法拨通ISP运营商的局端设备,无法接入互联网;2、宽带线路出现故障,路由器无法拨通ISP运营商的局端设备,无法连通;3、宽带DNS服务器由于某种...
- 恢复大师app下载(恢复大师app下载软件)
-
是真的。开心手机恢复大师是一款苹果手机数据恢复软件,可以恢复删除的微信聊天记录、短信、通讯录、备忘录、qq聊天记录等17种数据。我测试了一下,确实是可以恢复的。而且开心手机恢复大师是可以免费试用的,是...
- windowsxp下载网站(windows xp download)
-
目前无法下载因为红色警戒XP电脑版是一款已经停止开发的游戏,官方已经停止了对其的支持和更新。虽然网上有一些模拟器可以运行该游戏,但是安装和使用相对困难,而且可能存在版权问题。建议玩家选择其他同类型的游...
- 没人用过的激活码没过期(没人用过的激活码没过期可以用吗)
-
迷你世界并不存在什么激活码的。《迷你世界》是一款高度自由的休闲类3D沙盒游戏,有着非常方便快捷的多人联机模式,只要有网络就能和各个地方的小伙伴们一起玩。这里没有等级和规则限制,没有规定的玩法,只有随心...
- 2017年联想笔记本电脑有几款
-
17年的笔记本电脑可以勉强安装一下win10系统试试。关键看你的内存有多少,内存大于4个G的话可以安装win10速度不会太慢。最好是安装win7系统,这样能发挥你这台电脑的所有的性能,你用起来也会感觉...
- 当前显卡排名(当下显卡排行)
-
101、Irispro5802、Iris62002、Iris52004、UHD630/6205、HD6306、HD5307、HD46008、HD44009、HD420010、HD40...
- win10专业版激活变成企业版(win10专业版激活变成企业版怎么办)
-
win10永久激活密钥很少,一旦网上有分享,等你拿到时就超过期限了,一般是要购买。激活win10系统可以使用激活工具:win10激活工具下载一、win10专业版产品密钥NXRQM-CXV6P-PBGV...
- ghostwinxp下载纯净版(ghost win7纯净版下载)
-
可以下载的,现在官网和其他网站上都可以下载xp原版的。可以通过以下步骤下载我的世界游戏到xp系统中:1.首先打开你的浏览器软件,搜索关键字“我的世界xp版下载”,找到可靠下载地址;2.从下载页面下...
- 惠普完整版驱动(惠普最新驱动)
-
惠普官方的标准操作:HP1050安装驱动步骤:一:准备:拿出驱动光盘放入光驱或到HP官网下载完整版驱动。二:不要插USB数据线或插上线打印机电源不要开,安装完整版驱动,当程序提示插入USB数据线时,插...
- 浏览器最好用的(浏览器最好用的插件)
-
一、谷歌浏览器谷歌浏览器是公认最好用的,这个可以从市场占有率看出端倪,超过三分之二的用户使用谷歌浏览器。Chrome浏览器以简洁快速著称,不管是普通用户还是开发人员,chrome浏览器都是首选。Chr...
- fast路由器6位初始密码(fast路由器的密码)
-
答:fast路由器初始密码是admin;新款的迅捷无线路由器,管理界面没有初始密码。查看迅捷无线路由器底部标签,标签上标注了admin,说明初始密码就是admin;如果没有,说明该路由器没有初始密码。...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
