2024年1月26日发(作者:)
江苏财经职业技术学院
Python编程基础实验指导书
班级:_______________
学号:_______________
姓名:_______________
指导老师:高胜利 笪林梅 葛竹春
二〇二一年七月
前言 上机实验的目的和要求
一 、上机实验的目的
上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下:
1、加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。
2、了解和熟悉Python语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。
3、学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。
4、在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。
二、上机实验前的准备工作
1、了解所用的计算机系统的性能和使用方法;
2、复习和掌握与本实验有关的教学内容;
3、准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;
4、准备好调试和运行时所需的数据。
三 、上机实验的步骤
1、调出Python语言编译系统,进入Python语言工作环境;
2、输入自己编制好的程序;
3、检查输入是否有错,及时更正;
4、运行程序,分析结果;
四、实验结束,整理实验报告
实验报告应包括以下内容:
1、程序清单;
2、运行结果;
3、对结果的分析和本次获得的经验和体会;
目 录
实验一、Python 安装与开发环境搭建 ................................................................................. 1
实验二、Python 中turtle库 .................................................................................................. 4
实验三、Python 编程基础知识。 ....................................................................................... 10
实验四、判断语句 ................................................................................................................. 13
实验五、循环语句 ................................................................................................................. 17
实验六、字符串的使用 ......................................................................................................... 24
实验七、列表和元组 ............................................................................................................. 31
实验八、字典和集合 ............................................................................................................. 44
实验九、函数 ......................................................................................................................... 53
实验十、面向对象程序设计 ................................................................................................. 59
实验十一、文件操作 ............................................................................................................. 77
实验十二、异常 ..................................................................................................................... 87
实验十三、GUI编程 .............................................................................................................. 94
实验十四、综合实训 ........................................................................................................... 109
实验一、Python 安装与开发环境搭建
一、实验目的
1、熟练掌握 Python 解释器安装与基本用法。
2、熟练掌握使用 pip 命令安装 Python 扩展库。
3、熟悉离线安装轮子文件的方法。
二、实验内容
1、安装 Python 解释器。
2、安装 Python 扩展库。
实验步骤:
1)打开 Python 官方网站 。
2)下载 Python 3.5.x 或 Python 3.6.x 或 Python 3.7.x 的最新版,至少安装其中两个。
3)在开始菜单中找到成功安装的 IDLE,输入下面的代码,确保 IDLE 运行正常。
4)在资源管理器中进入 Python 安装目录的 scripts 子目录,然后按下 Shift
键,在空白处单击鼠标右键,在弹出来的菜单中选择“在此处打开命令窗口”进入命令提示符环境。如图所示。
5)使用 pip 命令在线安装 Python 扩展库 numpy、pandas、scipy、matplotlib、jieba、 openpyxl、pillow。安装 openpyxl 的命令如图所示:
1
6)如果遇到安装不成功的扩展库,使用浏览器打开下面的网址下载 whl 文件进行离线 安装:/~gohlke/pythonlibs/
7)在 IDLE 中使用 import 导入安装好的扩展库,验证是否安装成功。
3、编写程序,输出如下语句。
这是我的第一个Python程序!
【参考代码】:
print("这是我的第一个Python程序")
【运行结果】:
4、通过用户输入两个数字,并计算两个数字之和。
【问题分析】使用了内置函数 input() 来获取用户的输入,input() 返回一个字符串,所以我们需要使用 float() 方法将字符串转换为数字。两数字运算,求和我们使用了加号 (+)运算符,除此外,还有减号(-), 乘号(*), 除号(/), 整除 (//)
或取余(%)。
【参考代码】:
num1 = input('输入第一个数字:') #input接受的数据默认为字符串
num2 = input('输入第二个数字:')
# 求和
sum = float(num1) + float(num2) #float把数字字符串转换成数字
print('两个数相加的结果为’,sum)
【运行结果】:
【运行结果】:
三、练一练
1、编写程序,输出如下语句。
**********************************
2
这是我的第二个python程序!
**********************************
【代码】:
【运行结果】:
3
四、实验收获
实验二、Python 中turtle库
一、实验目的
1、掌握 python语言绘制图形的一般方法。
2、熟记绘制图形的常用命令。
二、实验内容
1、等边三角形的绘制。
【问题分析】使用turtle库的中fd()和left()函数绘制一个等边三角形,边长为200,画笔宽度为5,画笔颜色为红色,填充颜色为黄色。
【参考代码】:
from turtle import *
setup(500,500)
color("red","yellow")
pensize(5)
begin_fill()
fd(200)
left(120)
fd(200)
left(120)
fd(200)
end_fill()
done()
【运行结果】:
【试一试】:画一个矩形,黄边,红色填充。
2、正五边形的绘制。
【问题分析】:正五边形的绘制。使用turtle库的中circle函数绘制一个正五边形,内切半径为100,画笔宽度为5,画笔颜色为红色,填充颜色为黄色。
【参考代码】:
from turtle import *
color("red","yellow")
4
begin_fill()
pensize(5)
circle(100,steps=5)
end_fill()
done()
【运行结果】
3、五角星的绘制。
【问题分析】:五角星外角144度,内角36度。
【参考代码】:
from turtle import *
fillcolor("red")
begin_fill()
for i in range(1,6):
fd(200)
right(144)
end_fill()
done()
【运行结果】:
【试一试】:能不能画一面五星红旗。
5
4、叠加靠边三角形的绘制,使用turtle库中有fd()函数和seth()函数绘制一个叠加等边三角形。
【参考代码】:
from turtle import *
fd(100)
seth(-120)
fd(100)
seth(120)
fd(100)
seth(60)
fd(100)
seth(-60)
fd(200)
seth(-180)
fd(200)
seth(60)
fd(100)
done()
【运行结果】:
5、绘制一个太阳花的图形。
【参考代码】:
from turtle import *
setup(500,500,100,100)
color("red","yellow")
begin_fill()
for i in range(50):
fd(200)
left(170)
end_fill()
6
done()
【运行结果】:
三、练一练
1、绘制一个包含10个同心圆的靶盘。
【代码】:
【运行结果】:
2、从下面的七幅图中选择或者自己创意至少四幅图形用Py实现并上传至中。python123是面向工科教学需求的计算机类基础课程教学辅助平台,大家可以把自己绘制的图形在平台上展示交流。
7
【代码】:
四、实验收获
五、常用命令
1、画笔运动命令
命令
fd(distance)
backward(distance)
right(degree)
left(degree)
pendown()
goto(x,y)
penup()
circle()
setx()
sety()
seth(angle)
home()
dot(r)
2、画笔控制命令
8
说明
向当前画笔方向移动distance像素长度
向当前画笔相反方向移动distance像素长度
顺时针移动degree
逆时针移动degree
移动时绘制图形,缺省时也为绘制
将画笔移动到坐标为x,y的位置
提起笔移动,不绘制图形,用于另起一个地方绘制
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
将当前x轴移动到指定位置
将当前y轴移动到指定位置
设置当前朝向为angle角度
设置当前画笔位置为原点,朝向东。
绘制一个指定直径和颜色的圆点
命令
fillcolor(colorstring)
color(color1, color2)
filling()
begin_fill()
end_fill()
hideturtle()
showturtle()
pensize(width)
pencolor(colorstring)
说明
绘制图形的填充颜色
同时设置pencolor=color1, fillcolor=color2
返回当前是否在填充状态
准备开始填充图形
填充完成
隐藏画笔的turtle形状
显示画笔的turtle形状
设置画笔宽度
设置画笔颜色
9
实验三、Python 编程基础知识。
一、实验目的
1、掌握python变量的命名规则
2、熟悉python变量的数据类型
3、熟记数据类型的关键字与表达形式。
二、实验内容
1、编写程序,实现从键盘输入某商品的单价和数量,求出商品的总价并输出。
【问题分析】:用input语句输入单价和数量,input输入默认为字符串,要实现字符串从数字类型转换。
【参考代码】:
a = float(input('请输入商品价格 '))
b = float(input('请输入商品数量 '))
c =a*b
print('商品总价为',c)
【运行结果】:
2、通过用户输入三角形三边长度,并计算三角形的面积。
【问题分析】:解此问题的关键是要找到求三角形面积的公式area=s*(s-a)*(s-b)*(s-c)的平方根,其中s=1/2(a+b+c)。
【参考代码】:
a = float(input('输入三角形第一边长: '))
b = float(input('输入三角形第二边长: '))
c = float(input('输入三角形第三边长: '))
# 计算半周长
s = (a + b + c) / 2
# 计算面积
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('三角形面积为 %0.2f' %area)
【运行结果】:
3、通过用户输入两个变量,并相互交换。
【问题分析】:要实现交换,就要引入一个中间量,通过中间量来实现交换。
【参考代码】:
# 用户输入
x = input('输入 x 值: ')
y = input('输入 y 值: ')
# 创建临时变量,并交换
10
temp = x
x = y
y = temp
print('交换后 x 的值为: {}'.format(x))
print('交换后 y 的值为: {}'.format(y))
【运行结果】:
三、练一练
1、键盘输入字符串s,按要求把s输出到屏幕,格式要求:宽度为20个字符,等号字符填充,居中对齐。如果输入字符串超过20位,则全部输出。
# 注意:请不要修改其他已给出代码
s = input("请输入一个字符串:")
print("{______}".format(s))
【代码】:
【运行结果】:
2、输入圆的半径,输出圆的周长和面积。
【代码】:
【运行结果】:
3、输入华氏温度,输出摄氏温度。
【问题分析】:C=(F-32)/1.8。
【代码】:
【运行结果】:
4、输入一元二次方程的系数a,b,c,输出方程形式,计算二次方程的根并输出。
【代码】:
【运行结果】:
11
5、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,再将第一位和第四位交换。
【参考代码】:
【运行结果】:
四、默一默
运算符 名称 运算符 名称
加法运算 关系运算符等于
减法运算 关系运算符不等于
乘法运算 逻辑运算符与
除法运算 逻辑运算符或
模运算 逻辑运算符非
幂(乘方运算) 成员运算符在某个序列中
整除 成员运算符不在某个序列中
五、实验收获
12
实验四、判断语句
一、实验目的
1、掌握简单的if语句、if-else语句、if-elif-else语句的使用方法
2、理解判断语句的执行过程
3、掌握嵌套语句的使用方法
二、实验内容
1、编写程序,要求输入年龄,判断该学生是否成年(大于等于18岁),如果未成年,计算还需几年能够成年。
【问题分析】本实例可使用if-else语句进行条件判断,如果输入年龄大于等于18,输出“已成年”,计算还需要几年能够成年。
【参考代码】:
age = int(input("请输入学生的年龄:")) #输入变量age的值并转换为整型
if age>=18: #判断age是否大于等于18
print("已成年") #如果是,输出“已成年”
else: #如果不是
print("未成年") #输出“未成年”
print("还差",18-age,"年成年") #计算还差几年成年并输出
【运行结果】:
2、编写程序,要求输入三角形的三条边,计算三角形的面积并输出。
【问题分析】要形成三角形,有两个条件,条件一:输入三条边必须是整数,条件二:输入的三条边必须满足两数之各大于第三个数。
【参考代码】:
import math #导入math模块
a=int(input("请输入三角形的第一条边:"))
b=int(input("请输入三角形的第二条边:"))
c=int(input("请输入三角形的第三条边:"))
if a>0 and b>0 and c>0 and a+b>c and a+c>b and b+c>a:
#如果满足构成三角形条件
s=1/2*(a+b+c) #计算s
area=(s*(s-a)*(s-b)*(s-c)) #调用sqrt函数计算面积
print("此三角形面积为:",area) #输出三角形面积
else: #如不满足条件
print("输入的三条边不能构成三角形"); #输出提示信息
【运行结果】:
3、学生成绩可分为百分制和五级制,将输入的百分制成绩score,转换成相应的13
五级制成绩后输出。。
【参考代码】:
score=int(input("请输入百分制成绩:"))
if score>100 or score<0: #当分值不合理时显示出错信息
print("输入数据无意义")
elif score>=90: #当成绩大于等于90小于等于100时,输出“优”
print("优")
elif score>=80: #当成绩大于等于80小于90时,输出“良”
print("良")
elif score>=70: #当成绩大于等于70小于80时,输出“中”
print("中")
elif score>=60: #当成绩大于等于60小于70时,输出“及格”
print("及格")
else: #以上条件都不满足
print("不及格") #输出不及格
【运行结果】:
4、铁路运货的运费与路程的远近及货物的重量有关,设价目表如下:
不足100千米,每吨每千米为1.0元;
100千米以上,不足300千米,每吨每千米为0.9元;
300千米以上,不足500千米,每吨每千米为0.8元;
500千米以上,不足1000千米,每吨每千米为0.7元;
1000千米以上,每吨每千米为0.6元;
编一程序从键盘输入货物重量和路程,可以计算其相应的运费。
【参考代码】:
zl= float(input('请输入重量:'))
lc= float(input('请输入里程:'))
if lc<100:
yf=lc*zl
elif lc>=100 and lc<300:
yf=lc*zl*0.9
elif lc>=300 and lc<500:
yf=lc*zl*0.8
elif lc>=500 and lc<1000:
yf=lc*zl*0.7
else:
yf=lc*zl*0.6
print("货物重量为%.2f吨,路程为%.2f千米,货物的运费为%.2f"%(zl,lc,yf))
14
【运行结果】:
三、练一练
1、输入一个数字,判断是否为奇数或偶数并输出。
【代码】:
【运行结果】:
2、输入x的值,计算y的值并输出。
y= 7*x+10 x>10
5*x-4 x<=10
【代码】:
【运行结果】:
3、输入年份,判断是否为闰年并输出。
【问题分析】: 判断闰年条件有两种:1、能被4整除,但不能被100整除;2、能被400整除;
【代码】:
【运行结果】:
4、输入一个数,通过使用 if...lse 语句判断数字是正数、负数或零:。
【代码】:
【运行结果】:
5、输入一个数,使用if语句的嵌套,判断这个能被2和3整除的情况。
【代码】:
【运行结果】:
6、输入三个数,把三个数按降序输出。
15
【代码】:
【运行结果】:
四、实验收获
16
实验五、循环语句
一、实验目的
1、掌握循环语句的使用
2、熟记for、while语句的语法规则
3、掌握循环语句的语法规则、执行过程和使用方法
二、实验内容
1、用while语句或for语句编写程序,求S=1+2+3+„+100的值。。
【参考代码】:
while语句
i=1 #创建变量i,赋值为1
s=0 #创建变量S,赋值为0
while i<=100: #循环,当i>100时结束
s+=i #求和,将结果放入S中
i+=1 #变量i加1
print("S=1+2+3+„+100=",S) #输出S的值
for语句
s=0 #创建变量S,赋值为0
for i in range(1,101): #循环变量i从1循环到100
S+=i #求和,将结果放入S中
print("S=1+2+3+„+100=",s)
【运行结果】:
2、用for语句编写程序,实现输出1至200中能同是被2和3整除的数,每行输出10个数,每个数占输出宽度为5。
【参考代码】:
k=0
for i in range(1,201):
if (i%2==0) and (i%3==0): #设置判断条件
print("%5d"%i,end=" ") #设置输出宽度为5,并且不换行
k=k+1 #如果找到满足条件的数,数的个数累加1
if (k%10==0): #如果个数为10的倍数,换行
print("")
【运行结果】:
3、输入一个数,输出这个数的阶乘。
【参考代码】:
17
num = int(input("请输入一个数字: "))
factorial = 1
# 查看数字是负数,0 或 正数
if num < 0:
print("抱歉,负数没有阶乘")
elif num == 0:
print("0 的阶乘为 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("%d 的阶乘为 %d" %(num,factorial))
【运行结果】:
4、输出斐波那契数列,斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8,
13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
【参考代码】:
nterms = int(input("你需要几项?"))
# 第一和第二项
n1 = 0
n2 = 1
count = 2
# 判断输入的值是否合法
if nterms <= 0:
print("请输入一个正整数。")
elif nterms == 1:
print("斐波那契数列:")
print(n1)
else:
print("斐波那契数列:")
print(n1,",",n2,end=" , ")
while count < nterms:
nth = n1 + n2
print(nth,end=" , ")
# 更新值
n1 = n2
n2 = nth
count += 1
18
【运行结果】:
5、输入一个数,判断这个是否为素数并输出。
【参考代码】:
num=int(input("请输入一个数"))
flag=1
for i in range(2,num):
if num%i==0:
flag=0
if flag==1:
print(num,"是素数")
else:
print(num,"不是素数")
【运行结果】:
6、用for循环求两个数的最大公约数。提示:辗转相除法求两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数;又用第二个余数除第一个余数,得第三个余数;这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数。
【参考代码】:
y=input("第二个数y=")
y=int(y)
a=x
b=y
if a c=a a=b b=c while a%b!=0: gys = a%b a = b b = gys print("%d和%d的最大公约数是%d"%(x,y,gys)) 【运行结果】: 7、编写一个程序,输出以下乘法表。 【参考代码】: 19 for x in range(1,10): #循环变量x从1循环到9 for y in range(1,x+1): #循环变量y从1循环到x+1 print(y,"*",x,"=",x*y,"",end="") #输出乘法表达式 print("") #输出空字符串,作用是为了换行 【运行结果】: 8、中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?编程实现将所有可能的方案输出在屏幕上。 【参考代码】: for cock in range(0,20+1): #鸡翁范围在0到20之间 for hen in range(0,33+1): #鸡母范围在0到33之间 for biddy in range(3,99+1): #鸡雏范围在3到99之间 if (5*cock+3*hen+biddy/3)==100: #判断钱数是否等于100 if (cock+hen+biddy)==100: #判断购买的鸡数是否等于100 if biddy%3==0: #判断鸡雏数是否能被3整除 print ("鸡翁:",cock,"鸡母:",hen,"鸡雏:",biddy) 【运行结果】: 9、打印图形 * *** ***** ******* ********* 【参考代码】: for i in range(1,6): for j in range(1,i*2): print("*",end="") print() 【运行结果】: 三、练一练 1、编程求1!+2!+3!+4!+5!并输出结果。 【代码】: 【运行结果】: 20 【试一试】:求1!-2!+3!-4!+5!-6!+7!-8! 2、根据斐波那契数列的定义,F(0)=0, F(l)=l, F(n)=F(n-l)+F(n-2)(n>=2),输出不大于100的序列元素。 例如:屏幕输出实例为: 0,1, 1,2, 3,„(略) # 请在______处使用一行代码或表达式替换 # # 注意:请不要修改其他已给出代码 a, b = 0, 1 while ______: print(a, end=',') a, b = ______ 【代码】: 【运行结果】: 3、以123为随机数种子,随机生成10个在1(含)到999(含)之间的随机数,每个随机数后跟随一个逗号进行分隔,屏幕输出这10个随机数。 import random ______ for i in range(______): print(______, end=",") 【代码】: 【运行结果】: 4、使用while循环打印九九乘法口诀表。 【代码】: 【运行结果】: 5、使用while循环输出2-100之间的素数。 【代码】: 21 【运行结果】: 6、打印图形。 ******** ****** **** ** 【代码】: 【运行结果】: ## # # # # # # # # # # 【代码】: 【运行结果】: 7、如果一个n位正整数等于其各位数字的n次方之和,则称该数为水仙花数。 例如1^3 + 5^3 + 3^3 = 153。编程求1-1000之内的水仙花数 【代码】: 【运行结果】: 8、以25为种子,随机生成1个1〜100之间的整数,让用户来猜,用户最多只能猜6次。接收用户输入的数字,输入 的数字和随机数相同时,则打印〃恭喜你,猜对了!〃,然后程序结束;若输入的数比随机数小,则打印〃小了, 请再试试〃,程序继续;若输入的数比随机数大,则打印〃大了,请再试试〃,程序继续;若6次还没猜对,在评判大小后,输出〃谢谢!请休息后再猜〃,然后程序退出。 示例如下(其中数据仅用于示意): 输入: 80 输出: 大了,请再试试 # 在____________上补充代码 22 import random (25) n = _______________________ for m in range(1,7): x = eval(input("请输入猜测数字:")) if x == n: print("恭喜你,猜对了!") break elif ______________________: print("大了,再试试") else: print("小了,再试试") if ______________________: print("谢谢!请休息后再猜") 【运行结果】: 四、实验收获 23 实验六、字符串的使用 一、实验目的 1、掌握通用序列的操作方法。 2、理解字符串格式化操作方法。 3、掌握针对字符串的程序设计方法。 二、实验内容 1、编写程序,要求利用序列的乘法运算输出如下图所示的文字格式。 【参考代码】: strs="I love Python! " #定义字符串并赋值 print(" "*10+"-"*15) #利用序列的乘法运算输出10个空格和15个“-” print(" "*30) #输出30个空格 print(" "*10+strs) #输出10个空格和字符串 print(" "*30) #输出30个空格 print(" "*10+"-"*15) #输出10个空格和15个“-” 2、输入一个字符串,求字符串的长度、字符串中的最大字符和最小字符。 【参考代码】: strs=input("请输入一个字符串:") str_len=len(strs) str_max=max(strs) str_min=min(strs) print("该字符串长度为:",str_len) print("该字符串中最大字符为:",str_max) print("该字符串中最小字符为:",str_min) 【运行结果】: 3、实现ASCII码与字符相互转换。 【参考代码】: c = input("请输入一个字符: ") # 用户输入ASCII码,并将输入的数字转为整型 a = int(input("请输入一个ASCII码: ")) print( c + " 的ASCII 码为", ord(c)) print( a , " 对应的字符为", chr(a)) 24 【运行结果】: 4、查找子串“like”是否在字符串new_str中。 【参考代码】: new_str = "I like learning Python" #创建字符串 a=new_("like") #在new_str中查找子串“like” b=new_("like",5,15) #在new_str的索引为5~15的字符中查找子串 print(a) #输出a print(b) #输出b 【运行结果】: 5、创建字符串new_str=“This is a Python book!”,使用count()方法找出其中“is” 出现的次数。 【参考代码】: new_str="This is a Python book!" #创建字符串"This is a Python book!" a=new_('is') #统计new_str中“is”出现的次数 b=new_('is',1,6) #设置开始和结束索引,统计“is”出现的次数 print(a) #输出a print(b) #输出b 【运行结果】: 6、将字符串“This is a python book!“中的多余空格删除,即如果有连续空格只保留一个。 【参考代码】: new_str = "This is a python book!" #创建字符串 s_str=new_() #以空字符为分割符,将new_str全部分割 print(s_str) #输出分割后结果 j_str=' '.join(s_str) #用空格连接s_str中的字符 print(j_str) #输出连接后的字符串 【运行结果】: 7、键盘输入一句话,用jieba分词后,将切分的词组按照在原话中逆序输出到屏幕上,词组中间没有空格。示例如 下: 输入: 我爱妈妈 输出: 妈妈爱我 【参考代码】: 25 import jieba txt = input("请输入一段中文文本:") ls=(txt) for i in ls[::-1]: print(i,end='') 【运行结果】: 8、编写一程序,统计mystring字符串出现字母次数并输出。 【参考代码】: mystring=input("请输入一字符串") mystring=() #字符串转换成小写 s=0 for i in range(0,len(mystring)): #len求字符串的长度 if ord(mystring[i])>=97 and ord(mystring[i])<=123: #利用小写字母的ASCII码判断字母的范围 s=s+1 print("字符串字符个数为:",s) 【运行结果】: 9、将英文句子“I have been studying languages for several years.”中“several”改为“ten”,去掉句中的“.”号。 【参考代码】: s=input("请输入一个英文句子:") print ("你输入的英文句子是: ", s) print("替换several为ten") s1 = e("several", "ten") print(s1) print("删除.") s2 = e(".", "") print(s) 【运行结果】: 10、打印如下图: 26 import time #导入time模块 scale=10 #变量scale用于表示输出进度条的精度 print("----------执行开始----------") #输出 for i in range(scale+1): #循环变量从0到10 a="**"*i #用“*”表示已完成的部分 b=".."*(scale-i) #用“.”表示未完成的部分 c=(i/scale)*100 #计算完成百分比并赋值给c print("%{:^3.0f}[{}->{}]".format(c,a,b)) #格式化输出 (0.1) #暂停0.1秒 print("----------执行结束----------") 三、练一练 1、请写代码替换横线,不修改其他代码,实现以下功能:键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,减号字符-填充,右对齐,带千位分隔符。如果输入正整数超过20位,则按照真实长度输出。 例如:键盘输入正整数n为1234,屏幕输出 1,234。 【代码】: n = eval(input("请输入正整数:")) print("{______}".format(n))。 【运行结果】: 2、键盘输入一段文本,保存在一个字符串变量 s中,分别用Python内置函数及jieba库中已有函数计算字符串s的中文字符个数及中文词语个数。注意:中文字 符包含中文标点符号。 例如,键盘输入: 27 俄罗斯举办世界杯 屏幕输出: 中文字符数为8,中文词语数为3。 【代码】: import jieba s = input("请输入一个字符串") n = ______ m = ______ print("中文字符数为{},中文词语数为{}。".format(n, m)) 【运行结果】: 3、输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入“They are students.”和“aeiou”,则删除之后的第一个字符串变成“Thy r stdnts.” 结果: 请输入一个句子:They are students. 要删除的字母有:aeiou 输出:Thy r stdnts 【代码】: a = input('请输入一个句子:') b = input('要删除的字母有:') s = "" for i in a: if i in b: ____________ else: ____________ print(s) 【运行结果】: 4、编写程序,生成一副扑克牌,有4个花色,每个花色有13张牌 【问题分析】:根据题目要求,需要使用2个字符串列表来存放13张牌和4个花色,因为每个花色都要配13张牌,因此需要设计一个二重循环结构来完成。 【代码】: ranks="2 3 4 5 6 7 8 9 10J Q K A " suits="黑桃红桃方块梅花" suit="" rank="" 28 for i in range(0,26,2): for j in range(0,8,2): _______________ _______________ print(suit+rank,end="") print() 5、请输入星期几的第1个字母,用来判断是星期几,如果第一个字母一样,则继续判断第2个字母,依次类推。 【代码】: 【运行结果】: 6、设定字符串“test_str="02001 hello python 10310",去掉test_str中两侧的数字和空格后输出。 【代码】: test_str="02101 Hello Python 10310" print(__________________) 【运行结果】: 7、假设有一段英文,其中有字母“I”误写为“i”,请编写程序进行纠正。 【代码】: x = "i am a teacher,i am man, and i am 38 years old.I am not a businessman." ______________________ print(x) 【运行结果】: 8、编写一个注册验证程序,设定如下条件: (1)用户名必须以下划线“_”开头,长度必须在3~30个字符之间; (2)密码必须由下划线、数字和字母共同组成,不允许有其他符号,长度必须在8~16个字符之间。 【问题分析】:本程序可采用嵌套的if语句来实现,在判断密码中是否包含“_”时,可以使用find()方法,如果包含“_”则使用replace()方法将“_”替换为“1”,接着就可以使用isalnum()方法来检测字符串是否由字母和数字组成。 【代码】: 29 【运行结果】: 四、默一默字符串常用方法和函数。 1、一个较长的字符串中查找子串,语法格式为: 2、统计字符串里某个子串出现的次数,语法格式为: 3、指定字符为分隔符,从字符串左端开始将其分隔成多个字符串,语法格式为: 4、将序列中的元素以指定的字符连接,生成一个新的字符串,语法格式为: 5、将字符串中的旧字符串替换成新字符串,语法格式为: 6、删除字符串两端连续的空白字符或指定字符,语法格式为: 7、字符串中所有大写字符为小写,语法格式为: 8、字符串中所有小写字符为大写,语法格式为: 9、用于检测字符串是否由字母和数字,或两种的一种组成,语法格式为: 10、求字符串的长度。 11、求字符串最大字符和最小字符。 12、求字符的ASCII码值和将ASCII值转换成字符。 五、实验收获 30 实验七、列表和元组 一、实验目的 1、 掌握列表的常见操作; 2、理解列表的概念; 3、掌握元组的使用方法; 4、理解列表的元组的区别; 二、实验内容 1、列表的遍历。 【参考代码】: 使用while循环遍历列表: anmial=["pig","dog","cock","tiger"] length=len(anmial) #len表示求列表的长度 i=0 while i print(anmial[i]) i=i+1 【运行结果】: 使用for循环遍历列表: anmial=["pig","dog","cock","tiger"] for name in anmial: print(name) 【运行结果】: 2、列表的基本操作 【参考代码】: list1=[1,2,3,4] (5) #将元素5添加到列表的末尾 print(list1) list2=[6,7,8] (list2) #将list2添加到list1中 print(list1) (4,9) #将元素9添加到列表索引号为4的位置中 print(list1) s=(9) #查找元素9在列表中的位置 print(s) del list1[4] #删除列表中位置为4的元素 31 print(list1) del list1[2:5] #删除列表中位置为2至4的元素 print(list1) s=(2) #删除列表中位置为2的元素并把值返回给s print("删除的元素为:",s,"删除后的列表为:",list1) (7) print(list1) (7) #删除list1中第一个和7匹配的元素 print(list1) e() #将list1元素反向存放 print(list1) () #将list1升序排列 print(list1) (reverse=True) #将list1降序排列 print(list1) 【运行结果】: 3、将列表list1中的数值复制至list2中。 【参考代码】: list1=[1,2,3,4,5,6,7,8,9,10] list2=[] for i in list1: (i) print(list2) 【运行结果】: 4、输出列表内3的倍数及个位为3的数。 列表数据为: [13, 15, 66, 32, 98, 96, 85, 27, 60] 【参考代码】: list=[13, 15, 66, 32, 98, 96, 85, 27, 60] print("列表数据为:",list) print("列表内3的倍数及个位为3的数有:") for i in range(len(list)): if list[i] % 3==0 or list[i] % 10==3: print(list[i]) 【运行结果】: 32 5、任意输入10整数并依次添加到一个空列表a中,把这10个数升序排列,输出排序后的列表、10个数的和。 【参考代码】: a=[] #定义一个空列表 for i in range(0,10): s=int(input("请输入一个数")) (s) #将输入的元素添加到列表a中 print("列表排序前:",a) () print("列表排序后:",a) s=0 for i in a: s=s+i print("列表元素之和:",s) 【运行结果】: 6、列表翻转指定个数的元素,将长度为 10 的列表的前面 k个元素翻转到列表尾部并输出。 【参考代码】: list1=[] k=int(input("请输入要翻转的个数")) for i in range(0,10): num=int(input("请输入list1中一个数:")) (num) print("列表list1翻转前:",list1) list2=list1[0:k] list3=list1[k:10] (list2) print("列表list1翻转后:",list3) 【运行结果】: 7、键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入,示例如下: 张三 男 23 李四 女 21 五五 男 18 计算并输出这组人员的平均年龄和其中男性人数,格式如下: 平均年龄是20.67,男性人数是2。 33 【参考代码】: data = input() # 姓名 年龄 性别 s=0 n=0 i=0 while data: i=i+1 ls=() s=s+int(ls[2]) if ls[1]=='男': n=n+1 data = input() s=s/i print("平均年龄是{:.2f} 男性人数是{}".format(s,n)) 【运行结果】: 8、编写一个简易计算器,要求根据输入的数字和四则运算符号,计算运算结果并输出。 【问题分析】:输入两数和一个符号后,首先需要判断输入的符号是否为四则运算符,如果不是就输出提示语,否则就进行运算并输出。 【参考代码】: operator_list = ['+','-','*','/'] #创建列表并赋值四则运算符 number_1 = float(input("请输入第一个操作数:")) #获取第一个操作数 operator = input("请输入运算符:") #获取运算符 number_2 = float(input("请输入第二个操作数:")) #获取第二个操作数 #判断用户输入的运算符并进行计算,将结果赋值给变量result if operator not in operator_list: #输入的运算符不是四则运算符 print("输入的运算符有误,请输入四则运算符!") #输出提示语 else: #输入的运算符属于四则运算符 if operator == '+': #运算符为“+” result = number_1 + number_2 #两数相加的值赋给变量result elif operator == '-': #运算符为“-” result = number_1 - number_2 #两数相减的值赋给变量result elif operator == '*': #运算符为“*” result = number_1 * number_2 #两数相乘的值赋给变量result elif operator == '/': #运算符为“/” result = number_1 / number_2 #两数相除的值赋给变量result print(number_1,operator,number_2,"=",result) #将两个操作数的运算结34 果输出 【运行结果】: 9、有一个长度是10的列表,列表内有10个人名,要求去掉重复的人名。 【参考代码】: names = ['王晶', '李芙蓉', '赵青青','王晶', '张海洋','朱珠', '张盾', '李洋','刘凯', '李洋'] new_names = [] for i in names: if i not in new_names: new_(i) names = new_names print(names) 【运行结果】: 10、建立一个代表星期的元组表,输入一个0-6的整数,输出对应的星期名称。 【参考代码】: week=("日","一","二","三","四","五","六") print(week) w=input("Enter an integer: ") w=int(w) if w>=0 and w<=6: print("星期"+week[w]) else: print("错误输入") 【运行结果】: 11、定义一个二维列表,以矩阵形式输出列表中的所有行和列。 【参考代码】: a=[[1,2,3],[4,5,6]] for i in range(2): for j in range(3): print(a[i][j],end=" ") print() 【运行结果】: 12、已知两个3行3列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵。 【参考代码】: 35 X = [[12,7,3],[4,5,6],[7,8,9]] #定义矩阵X Y = [[5,8,1],[6,7,3],[4,5,9]] #定义矩阵Y result = [[0,0,0],[0,0,0],[0,0,0]] #定义新矩阵 for i in range(len(X)): #循环控制行 for j in range(len(X[0])): #循环控制列 result[i][j] = X[i][j] + Y[i][j] #计算新矩阵中的元素值 for r in result: #遍历输出新矩阵中的元素 print(r) 【运行结果】: 13、元组的基本操作 【参考代码】: x=(1,2,"gao","sheng","li") #定义一个元组,元组用圆括号 print(x[2]) #访问元组x中的第3项元素 y=('a','b') z=x+y #合并x,y元组后赋给z print(z) print(len(z)) #求元组的长度 print(tuple([1,2,3])) #将列表转换为元组 print(tuple("abc")) #将字符串转换成元组 【运行结果】: 三、练一练 1、已知list1=[1,2,3,4,5,6],请通过两种方法实现,使list1=[6,5,4,3,2,1]。 【参考代码】: 第一种方法: arr = [1, 2, 3, 4, 5, 6] ____________ print(arr) 第二种方法: arr = [1, 2, 3, 4, 5, 6] ____________ print(arr) 【运行结果】: 2、输入任意奇数个整数,要求计算中间数(数值大小处于中间的值)并输出 【参考代码】: 方法一: 36 arr = [] length = int(input("请输入数字的总个数(必须为奇数):")) i = 0 while i < length: num = int(input("输入第%d个数字:"%(i+1))) ____________ i+=1 ____________ index = ____________ print(arr[index]) 方法二: arr= input("请您输入奇数个整数,用空格隔开:") ____________ () index = len(arr) print(____________) 【运行结果】: 3、随机选择一个手机品牌屏幕输出。 # 注意:请不要修改其他已给出代码 import ______ brandlist = ['华为','苹果','诺基亚','OPPO','小米'] (0) ____________ ____________ print(name) 【运行结果】: 4、实现以下功能:a和b是两个列表变量,列表a为[3, 6, 9]己给定,键盘输入列表b,计算a中元素与b中对应元素乘积的累加和。 例如:键盘输入列表b为[1,2, 3],累加和为1*3+2*6+3*9=42,因此,屏幕输出计算结果为42 a = [3,6,9] b = eval(input()) #例如:[1,2,3] ______ for i in ______: s += a[i]*b[i] print(s)。 【运行结果】: 37 5、从键盘输入4个数字,各数字采用空格分隔,对应为变量xO,yO,xl,yl计算两点(xO,yO)和(xl,yl)之间的 距离,屏幕输出这个距离,保留2位小数。 例如:键盘输入:0 1 3 5 屏幕输出:5. 00 # 注意:请不要修改其他已给出代码 ntxt = input("请输入4个数字(空格分隔):") ______ x0 = eval(nls[0]) y0 = eval(nls[1]) x1 = eval(nls[2]) y1 = eval(nls[3]) r = pow(pow(x1-x0, 2) + pow(y1-y0, 2), ______) print("{:.2f}".format(r)) 【运行结果】: 6、编写程序,要求输入一个字符串,然后将字符串的所有字母全部后移一位,最后一个字母移动到字符串的开头,最后输出新的字符串。 【参考代码】: 方法一: 方法二: 【运行结果】: 7、用户按照列表格式输入数据,将用户输入的列表中属于字符串类型的元素连接成一个整字符串,并打印输出。 示例如下(其中数据仅用于示意): 输入: [123, "Python”, 98,"等级考试”] 输出: Python等级考试 # 在____________上补充代码 ls = eval(input()) s = "" for item in ls: if ________ == type("香山"): s += ___ _____ 38 print(s) 【运行结果】: 8、编写程序,生成一副扑克牌,有4个花色,每个花色有13张牌 【问题分析】:根据题目要求,需要使用2个字符串列表来存放13张牌和4个花色,因为每个花色都要配13张牌,因此需要设计一个二重循环结构来完成。外层循环控制4个花色,遍历列表中的每个花色,直到4个花色全部访问到,内层循环控制13张牌。在外层循环的每一次迭代中,内层循环都要执行一遍,在循环体中输出所有的牌面。 【参考代码】: ranks=["2","3","4","5","6","7","8","9","10","J","Q","K","A"] suits=["黑桃","红桃","方块","梅花",] ____________: ____________: print(suit+rank,end=" ") print() 【运行结果】: 9、用户输入月份,判断这个月是哪个季节。 【参考代码】: # 接收用户输入的月份 month = int(input('请输入一个月份:')) # 定义列表 spring = [3,4,5] summer = [6,7,8] autumn = [9,10,11] winter = [12,1,2] „„ „„ 【运行结果】: 10、编写程序,任意输入20个2~500之内的数放在一列表中,删除列表中的所有素数并输出。 【参考代码】: arr = [12,3,62,7,91,67,27,45,6] „„ „„ 【运行结果】: 39 11、使用turtle库绘制三个彩色的圆,圆的颜色按顺序从颜色列表color中获取,圆的圆心位于(0.0)坐标处,半径从 里至外分别是10像素,30像素,60像素。 import turtle as t color = ['red','green','blue'] rs = [10,30,60] for i in range(___(1)___): () (0, ___(2)___) t. ___(3)___ or(___(4)___) (___(5)___) () 【参考代码】: 【运行结果】: 12、求一个3*3矩阵的两条对角线元素之和。 【参考代码】: a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] result1 = 0 result2 = 0 for i in range(3): for j in range(3): if(__________): #行号和列号相等 result1+=a[i][j] if(__________): #行号和列号相加等于一个值?,且行和列不相等 result2+=a[i][j] 40 print('两条对角线元素之和为:',result1+result2) 【运行结果】: 13、把下面图形存储在二维列表中并输出。 1 5 5 5 5 1 5 5 5 5 1 5 5 5 5 1 【问题分析】:先定义一个空的4*4二维列表,然后找出这二维列表的规律。 【参考代码】: list2=[[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]] for i in range(0,4): for j in range(0,4): if _________: _________ else: _________ „„#输出二维列表 „„ 【运行结果】: 14、让用户输入一首诗的文本,内部包含中文逗号和句号(1)用jieba库的精确 模式对输入文本分词。将分词后的词语输出并以〃/〃分隔;统计中文词语数并输出;(2)以逗号和句号将输入文本分隔成单句并输出,每句一行, 每行20个字符宽,居中对齐。在(1)和(2)的输出之间,增加一个空行。 示例如下(其中数据仅用于示意): 输入: 月亮河宽宽的河,一天我从你身旁过, 输出: 月亮/河/宽宽的/河/一天/我/从/你/身旁/过/ 中文词语数是:10 月亮河宽宽的河 一天我从你身旁过 # # 在„„上补充一行或多行代码 41 # import jieba s = input("请输入一段中文文本,句子之间以逗号或句号分隔:") ...... for i in slist: if i in ",。": continue ...... print("n中文词语数是:{}n".format(m)) ...... 【运行结果】: 四、默一默 1、列表末尾添加新的元素。 2、列表末尾一次性追加另一个序列中的多个值 3、指定对象插入到列表的指定位置。 4、指定元素在列表中首次出现的位置。 5、统计指定元素在列表中出现的次数。 6、根据索引删除列表中的元素。 7、移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值。 8、用于移除列表中某个值的第一个匹配项。 9、用于将列表中的元素反向存放。 10、用于对原列表进行排序(默认为升序排序),排序后的新列表会覆盖原列表。 42 五、实验收获 43 实验八、字典和集合 一、实验目的 1、掌握字典的创建方法。 2、理解字典的基本操作方法。 3、掌握字典的遍历方法和嵌套使用方法。 4、理解集合的概念 5、掌握集合的创建及基本操作方法 二、实验内容 1、使用内置函数dict()创建字典。 【参考代码】: stu_info1 = {'num':'20180101', 'name':'Liming', 'sex':'male'} 接赋值创建字典 stu_info2 = dict(stu_info1) #通过其他字典创建 #直stu_info3 = dict([('num', '20180101'), ('name', 'Liming'), ('sex', 'male')]) #通过“(键,值)”对的序列创建 stu_info4 = dict(num = '20180101', name = 'Liming', sex = 'male') #通过关键字参数创建 stu_info5 = dict(zip(['num', 'name', 'sex'], ['20180101', 'Liming', 'male'])) #通过dict和zip结合创建 if stu_info1 == stu_info2 == stu_info3 == stu_info4 == stu_info5: #判断五个变量是否相等 print("创建字典的5种方式相同") #如果相同输出提示符 else: #如果不相同 print("创建字典的5种方式不相同) 【运行结果】: 2、使用fromkeys()方法创建字典。 【参考代码】: stu1_age=ys(["gao","wang","li"])#创建字典,“键”值默认为none print(stu1_age) stu2_age=ys(["gao","wang","li"],18) #创建字典,“键”值默认为18 print(stu2_age) 【运行结果】: 3、字典的基本操作 44 【参考代码】: stu1_age=ys(["gao","wang"],18) #创建字典,“键”值默认为18 print(stu1_age) stu1_age["wang"]=20 #修改"wang"的值 print(stu1_age) stu1_age["zhu"]=30 #添加"zhu"键名,并设置值为30 print(stu1_age) stu1_("zhu") #删除"zhu"键-值对 print(stu1_age) stu1_m() #随机删除“健-值” print(stu1_age) stu1_({"gao":20,"hu":40}) #更新字典,修改gao的值,同是添加hu的值 print(stu1_age) stu2_age=stu1_age #复制字典 print(stu2_age) 【运行结果】: 4、字典的遍历 【参考代码】: 遍历字典中所有的“键-值”对 stu_class={"gao":"c++","zhao":"python","li":"math"} for xm,kemu in stu_(): print(xm,"选修了",kemu) 遍历字典中所有的“键” stu_class={"gao":"c++","zhao":"python","li":"math"} for xm in stu_(): print(xm) 遍历字典中所有的“值” stu_class={"gao":"c++","zhao":"python","li":"math"} for km in stu_(): print(km) 【运行结果】: 5、在列表中嵌套字典 【参考代码】: 45 student_info1 = {'name':'Wangmi', 'sex':'F', 'age':'15'} #定义字典student_info1并赋值 student_info2 = {'name':'Linmei', 'sex':'M', 'age':'14'} student_info3 = {'name':'Chenhui', 'sex':'F', 'age':'14'} student = [student_info1, student_info2, student_info3] #创建包含三个学生的列表 for s in student: #遍历列表 print(s) 【运行结果】: 6、一个字典里存放一些居民的姓名和年龄,编程找到年龄最大的人并输出。 【参考代码】: person1={"li":18,"wang":50,"zhang":20,"sun":22} max="li" print("居民信息:") for key in (): print(key,person1[key]) if person1[max] max=key print("年龄最大的居民是%s,年龄是%d"%(max,person1[max])) 【运行结果】: 7、在字典中存储列表。 【参考代码】: stu_class = { 'Mary':['C','Math'], 'Jone':['Java','Art'], 'Lily':['Python'], 'Tony':['Python','Mysql','Math'] } #定义字典并赋值,字典中的值为列表 for name,cla in stu_(): #遍历字典所有的元素 print(name,'选的课程是:',) #输出键 for c in cla: #遍历列表 print(c) #输出列表中的值 【运行结果】: 8、在字典中嵌套字典。 46
本文发布于:2024-01-26 09:35:18,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1706232918857.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |