墙裂建议收藏,整理100道Python练手题目

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏) 这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。 阅读详情

墙裂建议收藏,100道Python练手题目


目录

实例001:数字组合

实例002:“个税计算”

实例003:完全平方数

实例004:这天第几天

实例005:三数排序

实例006:斐波那契数列

实例007:copy

实例008:九九乘法表

实例009:暂停一秒输出

实例010:给人看的时间

实例011:养兔子

实例012:100到200的素数

实例013:所有水仙花数

实例014:分解质因数

实例015:分数归档

实例016:输出日期

实例017:字符串构成

实例018:复读机相加

实例019:完数

实例020:高空抛物

实例021:猴子偷桃

实例022:比赛对手

实例023:画菱形

实例024:斐波那契数列II

实例025:阶乘求和

实例026:递归求阶乘

实例027:递归输出

实例028:递归求等差数列

实例029:反向输出

实例030:回文数

实例031:字母识词

实例032:反向输出II

实例033:列表转字符串

实例034:调用函数

实例035:设置输出颜色

实例036:算素数

实例037:排序

实例038:矩阵对角线之和

实例039:有序列表插入元素

实例040:逆序列表

实例041:类的方法与变量

实例042:变量作用域

实例043:作用域、类的方法与变量

实例044:矩阵相加

实例045:求和

实例046:打破循环

实例047:函数交换变量

实例048:数字比大小

实例049:lambda

实例050:随机数

实例051:按位与

实例052:按位或

实例053:按位异或

实例054:位取反、位移动

实例055:按位取反

实例056:画圈

实例057:画线

实例058:画矩形

实例059:画图(丑)

实例060:字符串长度

实例061:杨辉三角

实例062:查找字符串

实例063:画椭圆

实例064:画椭圆、矩形

实例065:画组合图形

实例066:三数排序

实例067:交换位置

实例068:旋转数列

实例069:报数

实例070:字符串长度II

实例071:输入和输出

实例072:创建链表

实例073:反向输出链表

实例074:列表排序、连接

实例075:不知所云

实例076:做函数

实例077:遍历列表

实例078:字典

实例079:字符串排序

实例080:猴子分桃

实例081:求未知数

实例082:八进制转十进制

实例083:制作奇数

实例084:连接字符串

实例085:整除

实例086:连接字符串II

实例087:访问类成员

实例088:打印星号

实例089:解码

实例090:列表详解

实例091:time模块

实例092:time模块II

实例093:time模块III

实例094:time模块IV

实例095:转换时间格式

实例096:计算复读次数

实例097:磁盘写入

实例098:磁盘写入II

实例099:磁盘读写

实例100:列表转字典

链接丨https://github.com/RichardFu123/Python100Cases

实例001:数字组合

题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

 

程序分析 遍历全部可能,把有重复的剃掉。

total=0for i in range(1,5):    for j in range(1,5):        for k in range(1,5):            if ((i!=j)and(j!=k)and(k!=i)):                print(i,j,k)                total+=1print(total)

 

简便方法 用itertools中的permutations即可。

import itertoolssum2=0a=[1,2,3,4]for i in itertools.permutations(a,3):    print(i)    sum2+=1print(sum2)

 

实例002:“个税计算”

题目 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

 

程序分析 分区间计算即可。

profit=int(input('Show me the money: '))bonus=0thresholds=[100000,100000,200000,200000,400000]rates=[0.1,0.075,0.05,0.03,0.015,0.01]for i in range(len(thresholds)):    if profit<=thresholds[i]:        bonus+=profit*rates[i]        profit=0        break    else:        bonus+=thresholds[i]*rates[i]        profit-=thresholds[i]bonus+=profit*rates[-1]print(bonus)

 

实例003:完全平方数

题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

 

程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

n=0while (n+1)**2-n*n<=168:    n+=1
print(n+1)

思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。

至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。

结合起来:

n=0while (n+1)**2-n*n<=168:    n+=1
for i in range((n+1)**2):    if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5):        print(i-100)

 

实例004:这天第几天

题目 输入某年某月某日,判断这一天是这一年的第几天?

 

程序分析 特殊情况,闰年时需考虑二月多加一天:

def isLeapYear(y):    return (y%400==0 or (y%4==0 and y%100!=0))DofM=[0,31,28,31,30,31,30,31,31,30,31,30]res=0year=int(input('Year:'))month=int(input('Month:'))day=int(input('day:'))if isLeapYear(year):    DofM[2]+=1for i in range(month):    res+=DofM[i]print(res+day)

 

实例005:三数排序

题目 输入三个整数x,y,z,请把这三个数由小到大输出。

 

程序分析 练练手就随便找个排序算法实现一下,偷懒就直接调函数。

raw=[]for i in range(3):    x=int(input('int%d: '%(i)))    raw.append(x)
for i in range(len(raw)):    for j in range(i,len(raw)):        if raw[i]>raw[j]:            raw[i],raw[j]=raw[j],raw[i]print(raw)

raw2=[]for i in range(3):    x=int(input('int%d: '%(i)))    raw2.append(x)print(sorted(raw2))

实例006:斐波那契数列

题目 斐波那契数列。

 

程序分析 斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。图方便就递归实现,图性能就用循环。

 

递归实现

def Fib(n):    return 1 if n<=2 else Fib(n-1)+Fib(n-2)print(Fib(int(input())))
朴素实现target=int(input())res=0a,b=1,1for i in range(target-1):    a,b=b,a+bprint(a)

实例007:copy

题目 将一个列表的数据复制到另一个列表中。

 

程序分析 使用列表[:],拿不准可以调用copy模块。

import copya = [1,2,3,4,['a','b']]
b = a          # 赋值c = a[:]        # 浅拷贝d = copy.copy(a)    # 浅拷贝e = copy.deepcopy(a)  # 深拷贝
a.append(5)a[4].append('c')
print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)

============ RESTART: F:\PyWorkspace\Python100\100examples\007.py ============

a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]

b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]

c= [1, 2, 3, 4, ['a', 'b', 'c']]

d= [1, 2, 3, 4, ['a', 'b', 'c']]

e= [1, 2, 3, 4, ['a', 'b']]

 

实例008:九九乘法表

题目 输出 9*9 乘法口诀表。

程序分析 分行与列考虑,共9行9列,i控制行,j控制列。

for i in range(1,10):    for j in range(1,i+1):        print('%d*%d=%2ld '%(i,j,i*j),end='')    print()

实例009:暂停一秒输出

题目 暂停一秒输出。

 

程序分析 使用 time 模块的 sleep() 函数。

import timefor i in range(4):    print(str(int(time.time()))[-2:])    time.sleep(1)

实例010:给人看的时间

题目 暂停一秒输出,并格式化当前时间。

 

程序分析 同009.

import time
for i in range(4):    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))    time.sleep(1)

实例011:养兔子

题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

 

程序分析 我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。

month=int(input('繁殖几个月?:'))month_1=1month_2=0month_3=0month_elder=0for i in range(month):    month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3    print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')    print('其中1月兔:',month_1)    print('其中2月兔:',month_2)    print('其中3月兔:',month_3)    print('其中成年兔:',month_elder)

实例012:100到200的素数

题目 判断101-200之间有多少个素数,并输出所有素数。

 

程序分析 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。用else可以进一步简化代码.

import mathfor i in range(100,200):    flag=0    for j in range(2,round(math.sqrt(i))+1):        if i%j==0:            flag=1            break    if flag:        continue    print(i)

print('\nSimplify the code with "else"\n')

for i in range(100,200):    for j in range(2,round(math.sqrt(i))+1):        if i%j==0:            break    else:        print(i)

实例013:所有水仙花数

题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

 

程序分析 利用for循环控制100-999个数,每个数分解出个位,十位,百位。

for i in range(100,1000):    s=str(i)    one=int(s[-1])    ten=int(s[-2])    hun=int(s[-3])    if i == one**3+ten**3+hun**3:        print(i)

实例014:分解质因数

题目 将一个整数分解质因数。例如:输入90,打印出90=233*5。

 

程序分析 根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。

target=int(input('输入一个整数:'))print(target,'= ',end='')
if target<0:    target=abs(target)    print('-1*',end='')
flag=0if target<=1:    print(target)    flag=1

while True:    if flag:        break    for i in range(2,int(target+1)):        if target%i==0:            print("%d"%i,end='')            if target==i:                flag=1                break            print('*',end='')            target/=i            break

 

实例015:分数归档

题目 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

 

程序分析 用条件判断即可。

points=int(input('输入分数:'))if points>=90:    grade='A'elif points<60:    grade='C'else:    grade='B'print(grade)

实例016:输出日期

题目 输出指定格式的日期。

程序分析 使用 datetime 模块。

import datetimeprint(datetime.date.today())print(datetime.date(2333,2,3))print(datetime.date.today().strftime('%d/%m/%Y'))day=datetime.date(1111,2,3)day=day.replace(year=day.year+22)print(day)

 

<

值得苦练的100道Python经典练手题,(附详细答案)建议收藏 阅读详情

相关推荐

python练手经典100例项目,70个python练手项目列表

大家好,本文将围绕python爬虫 70个python练手项目列表展开说明,80个python练手项目百度网盘是一个很多人都想弄明白的事情,想搞清楚python练手经典100例项目需要先了解以下几个事情。今天博主给大家带来了一份大礼,Python爬虫70例!!!以及完整的项目源码!!!本文下面所有的爬虫项目都有详细的配套教程以及源码,都已经打包好上传到百度云了,链接在文章结尾处!

m0_73979992的博客 1158

用AnythingLLM搭建私人RAG知识库:从入门到实战调优指南

大型语言模型虽然知识渊博,但无法触达私有文档中的具体内容,这正是检索增强生成(RAG)技术的核心价值所在。RAG通过先将文档切块并向量化,再在提问时检索最相关的片段拼接给模型,让AI基于指定资料精准回答,无需昂贵的模型微调。这种架构不仅让知识更新即时生效,还大幅降低了私有化部署的门槛。在实际工程中,RAG的落地需要合理选择嵌入模型、设计分块策略并调优检索参数,才能避免答非所问。对于个人或小团队,使用开源工具搭建本地知识库是最省心的路径,其中AnythingLLM以其开箱即用的特性,成为连接向量检索与模型推理

weixin_29062671的博客 227

Ubuntu20.04安装Ceres库

ceres真难安装。

little_white138的博客 8379

EMC案例:解决千兆网口RTL8211F EMI问题

摘要:本文分析了Amlogic S812平台OEM项目中RTL8211F-CG千兆网卡EMI辐射超标问题。发现百兆测试时25MHz时钟有3dB余量,但千兆125MHz时钟导致超标。问题根源包括:未关闭PHY芯片悬空CLKOUT引脚、TX/RXCLK端RC位置错误、包地不完整及参考地缺失。解决方案涉及软件关闭无用时钟、优化RC布局、加强包地与打孔、调整共模电感位置,并在HDMI 3.3V加磁珠。关键结论指出千兆网125MHz时钟需严格包地打孔,且RC取值需平衡EMI与通信性能。

电子绿洲的博客 1278

西门子PLC1200 1214C DC/DC/DC 驱动步进电机

控制电机旋转的指令在“指令”中的“工艺”下的“Motion Control”(若出现程序块无法调用情况,则看备注3的第4条),本篇只介绍常用指令(若想学习详细与更多指令,请参考指令手册)。

2301_79553921的博客 1万+

IP路由原理、静态路由及动态路由区分

什么是路由 路由是指导IP报文发送的路径信息。 直连路由:目的地所在网络与路由器直接相连。 间接路由:目的地所在网络与路由器非直接相连。 静态路由是由管理员手工配置而生成的路由。 动态路由路由器使用路由协议从其他路由器那里获悉的路由。

weixin_42227328的博客 5468

消息平台接入实战:Hermes Agent 实现微信/钉钉日常任务自动化的 4 步配置

揭示 Hermes Agent 接入微信/钉钉时高频失效的根本原因——非 API 调用问题,而是上下文边界缺失;详解通过 soul.md 锁定人格基线、skills/ 目录原子化封装技能、CLAUDE.md 控制记忆节奏、Docker 环境适配四步构建可信赖自动化信任链,并给出身份证号过滤、中文标点

weixin_42520239的博客 162

关于UMI设备采集数据的模型训练方法

模仿学习如专家模型、VLA模型,ACT、DP、openpi等算法模型训练时,都是使用的机器人的绝对位姿或关节角;而UMI记录的轨迹是相对于UMI起始点的,可以理解为是相对于起点的绝对增量,对应到机器人中就是相对于末端TCP的增量。在用模型进行训练时,当然可以,但这样进行模型训练的话达不到跨本体的能力,因为模型本身还是学习的基于机器人base坐标系的绝对位姿关系,倘若用这种方式进行处理,则UMI可以理解为是一个遥操的方法,本质还是记录的机器人的state。在看了和。

boss-dog 420

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 问题:因为电脑缩放问题--在selenium中定位元素后使用location截取验证码图片有些电脑上经常失败。。
下一篇: python 函数与方法的区分与示例
Python_bh
博客等级 码龄7年 11粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值