python编程基础实验指导书

阅读: 评论:0

2024年1月26日发(作者:)

python编程基础实验指导书

江苏财经职业技术学院

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

python编程基础实验指导书

本文发布于:2024-01-26 09:35:18,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1706232918857.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:输入   输出   列表   字符串   实验
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23