python学习_初级阶段综合实验 总
文章目录
实验1
问题描述
要求在运行该程序后,读入当前桌面下的文本文件 words.txt,遍历文件中的所有行,并完成以下任务:
· 统计文件总行数,输出到屏幕
· 统计最长单词的长度,输出到屏幕
· 将长度超过20的单词写入到当前路径下的新的一个文件,命名为output.txt
实验代码
with open(r"G:\Python\words.txt","r") as f:
with open(r"G:\Python\output.txt","r+") as x:
c=0
m=""
while True:
s = f.readline()
if len(s)>len(m):
m=s
if len(s)>20:
x.write(s)
if s =="":
break
c+=1
print("文件总行数是",c)
print("最长单词的长度是",len(m))
实验结果
实验2
问题描述
定 义 函 数 is_prime 判 断 某 个 数 是 否 为 素 数 , 并 实 现 将 列 表
ls =[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] 中的素数去除,输出去除素数后的列表 ls以及ls中元素个数。
提示:素数是只能被1和它本身整除的数,因此可以用这个数去除2到它减1的所有数,若有数能整除,则说明不是素数,返回False,若循环全部执行完毕,说明不存在能被整除的数,返回True。
实验代码
ls =[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
ls1=[]
for i in ls:
a = i
def is_prime(a):
for s in range(2,a):
aa = a % s
if aa == 0:
ls1.append(a)
return False
if aa != 0:
return True
is_prime(a)
for q in ls1:
while q in ls:
ls.remove(q)
print("去掉素数后ls列表为",ls)
print("去掉素数后ls列表长度为",len(ls))
实验结果:
实验3
问题描述
定义函数求两个数的最大公约数,并获得用户输入的数值 M 和 N,利用函数求 M和 N 的最大公约数。
提示:求最大公约数的步骤:
(1)将较大的数放在m,小数放在n
(2)用m除以n得到余数r
(3)判断r的值,若r为0,则最大公约数为n,否则执行(4)
(4)将上一个过程中的除数n作为被除数,余数作为除数,重复过程(2),直到余数r为0
实验代码
M = eval(input("请输入一个大值"))
N = eval(input("请输入一个小值"))
def cf(q,p):
r = q % p
if r == 0:
print("两个数的最大公约数为:",p)
else:
cf(p,r)
return
cf(M,N)
实验结果
实验4
问题描述
写函数,计算 Fibonacci (斐波那契)数列,编写程序输入数字n,调用该函数计算斐波那契数列前n项的和。(斐波那契数列:1、1、2、3、5、8、13、21、……)
提示:可以使用递归函数
F(n) = F(n-1) + F(n-2) 其中(n>2), F1 = F2 =1
实验代码
def fb(n):
if n<=2:
return 1
else:
return fb(n-1)+fb(n-2)
a=0
for i in range(1,int(input("请输入求几项的和"))):
a+=int(fb(i))
print("和为",a)
实验结果
实验5
问题描述
已知经理有:曹操,刘备,孙权
技术员有:曹操,孙权,张飞,关羽
用集合求:
1.既是经理也是技术员的有谁?
2.是技术员但不是经理的人有谁?
3.是经理,但不是技术员的有谁?
4.张飞是经理吗?
5.身兼一职的人有谁?
6.经理和技术员共有几人?
实验代码
s1={"曹操","刘备","孙权"}
s2={"曹操","孙权","张飞","关羽"}
print("既是经理也是技术员的有",s1&s2)
print("是技术员但不是经理的人有",s2-s1)
print("是经理,但不是技术员的有",s1-s2)
print("张飞是经理吗?")
print("张飞" in s1)
print("身兼一职的人有",s1^s2)
print("经理和技术员共有",len(s1|s2),"人")
实验结果
实验6
问题描述
定义一个元组(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17),输出元组内7的倍数及个位是7的数。
实验代码
t1=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
num={x for x in t1 if( x % 7 ==0 or x % 1 ==7 or x % 10 == 7)}
print(tuple(num))
实验结果
实验7
问题描述
定义列表 lst=[1,3,2,’a’,4,’b’,5,’c’]
(1)通过切片获取新的列表 lst2, lst2=[1,2,4,5]
(2)通过切片获取新的列表 lst4,lst4=[‘c’]
(3)通过切片获取新的列表 lst5,lst5=[‘b’,’a’,3]
实验代码
lst=[1,3,2,'a',4,'b',5,'c']
lst2=(lst[0:7:2])
print(lst2)
lst4=(lst[7:8])
print(lst4)
lst5=(lst[-3:-8:-2])
print(lst5)
实验结果
实验8
问题描述
定义字典dic = {‘k1’: ‘v1’, ‘k2’: [‘sb’, ‘aa’], (1, 2, 3, 4, 5): {‘k3’: [‘2’, 100, ‘wer’]}}
(1)k2对应的值中添加33
(2)k2对应的值的第一个位置插入一个元素‘s’
(3)将(1,2,3,4,5)对应的值添加一个键值对 ‘k4’:’v4’
(4)将(1,2,3,4)对应的值添加一个键值对(1,2,3):‘ok’
(5)将’k3’对应的值的‘wer’改为’qq’。
实验代码
dic={'k1':'v1','k2':['sb','aa'],(1,2,3,4,5):{'k3':['2',100,'wer']}}
dic['k2'].append(33)
print(dic)
print()
dic['k2'].insert(1,'s')
print(dic)
print()
dic[(1,2,3,4,5)]['k4']='v4'
print(dic)
print()
dic[(1,2,3,4)]={(1,2,3):'ok'}
print(dic)
print()
dic[(1,2,3,4,5)]['k3']=['2',100,'qq']
print(dic)
实验结果
实验9
问题描述
创建列表lst,包含地名值:‘北京’,’上海’,’天津’,’济南’,’郑州’,’合肥’,’南京’,’杭州’
编写代码实现下面功能:
( 1)计算列表的长度
( 2)向列表追加元素‘福州‘,并输出添加后的列表
( 3)在列表的第 3 个位置插入元素‘太原‘,并输出添加后的列表
( 4)修改列表第 3 个位置的元素为‘石家庄‘,并输出修改后的列表
( 5)删除列表中的元素‘上海‘,并输出修改后的列表
( 6)删除列表中的第 1 个元素,并输出删除元素的值以及删除后的列表
( 7)查询并输出元素‘郑州‘的索引位置;
( 8)使用切片操作,输出列表第 1 到第 5 个元素的值
( 9)使用切片操作,输出列表从开始到第 6 个元素的值
实验代码
L4=["北京","上海","天津","济南","郑州","合肥","南京","杭州"]
s=len(L4)
print("列表的长度是",s,end="\n")
L4.append("福州")#尾部添加
print(L4)
L4.insert(2,"太原")#节点插入
print(L4)
L4 [2]='石家庄'
print(L4,end= "\n")#修改第三个元素内容
L4.remove("上海")#删除匹配元素
print(L4)
b=L4.pop(0)#删除第一个元素
print("删除的元素是",b)
print(L4)
c=L4.index('郑州')#返回列表中第一个与之匹配的元素的位置
print("第一个与之匹配的元素的位置是",c)
print(L4[0:5])#切片输出
print(L4[0:6])
实验结果
实验10
问题描述
有元组 T1=(‘ 河北 ’,’ 河南 ’,’ 山东 ’,’ 安徽 ’,’ 江苏 ’,’ 浙江 ’,’ 河南 ’,’ 福建 ’) ,编写代码实现下面功能:
( 1 )向元组添加元素‘江西’,是否成功
( 2 )分别用 for 、 while 语句,遍历输出元组元素
( 3 )统计‘河南’在元组中出现的次数
( 4 )查找‘山东’在元组中的位置
( 5 )把元组转换成列表 L1
( 6 )把元组转换成字符串 S
( 7 )有元组 T2=(‘ 北京 ’,’ 天津 ’,’ 上海 ’) ,链接元组 T1 和 T2 生成新元组 T3
实验代码
T1=('河北','河南','山东','安徽','江苏','浙江','河南','福建')
T1=T1+('江西',)
#任务一
print("任务一结果为",T1)
#任务二
print("任务二结果为")
for i in T1:
print (i,end='')
print ()
i=0
while i<len(T1):
print (T1[i],end='')
i+=1
print ()
#任务三
print("任务三结果为",T1.count('河南'))
#任务四
print("任务四结果为",T1.index('山东'))
#任务五
print("任务五结果为",1ist(T1))
#任务六
print("任务六结果为",str(T1))
#任务七
T2 = ('北京','天津','上海')
print('存务七结果为',T1+T2)
实验结果
实验11
问题描述
通过键盘输入一个月份,判断是什么季节:
3,4,5月为春季,6,7,8月为夏季,9,10,11月为秋季,12,1,2月为冬季。
要求使用列表或元组实现
提示:
(1)定义列表变量spring、sumer、autumn、winter,分别将对应的月份存入相应的变量,例如:
spring = [3,4,5]
(2)使用if…elif…else语句判断输入的月份是否是某个变量中的成员,可以使用in操作符,例如:
if x in spring: # x为用户输入的月份
……
实验代码
spring=[3,4,5]
sumer=[6,7,8]
autumn=[9,10,11]
winter=[12,1,2]
a=int(input("请输入月份:"))
if a in spring:
print(a,"月份为春季")
elif a in sumer:
print(a,"月份为夏季")
elif a in autumn:
print(a,"月份为秋季")
else:
print(a,"月份为冬季")
实验结果
实验12
问题描述
写代码完成如下功能:
( 1)建立字典 d,包含内容是: “数学”:101, “语文”:202, “英语”:203, “物理”:204, “生物”:206。
( 2)向字典中添加键值对"化学":205。
( 3)修改"数学"对应的值为 201。
( 4)删除"生物"对应的键值对。
( 5)按顺序打印字典 d 全部信息,参考格式如下(注意,其中冒号为英文冒号,逐行打印):
201:数学
202:语文
203:(略)
实验代码
d={'数学':101,'语文':202,'英语':203,'物理':204,'生物':206}
print(d)
print()
d['化学']=205
print(d)
print()
d['数学']=201
print(d)
print()
x = d.pop('生物')
print(d)
print()
for k in d:
print(d[k],k,sep=":")
print()
实验结果
实验13
问题描述
有一个列表 studs 如下:
studs= [{‘sid’:‘103’,‘Chinese’: 90,‘Math’:95,‘English’:92},{‘sid’:‘101’,
‘Chinese’: 80,‘Math’:85,‘English’:82},{‘sid’:‘102’,‘Chinese’: 70,‘Math’:75,
‘English’:72}]
将列表 studs 的数据内容提取出来,放到一个字典 scores 中,在屏幕上按学号从小到大
的顺序显输出 scores 的内容。内容示例如下:
101:[85, 82, 80]
102:[75, 72, 70]
103:[95, 92, 90]
实验代码
studs= [{'sid':'103','Chinese': 90,'Math':95,'English':92},{'sid':'101',
'Chinese': 80,'Math':85,'English':82},{'sid':'102','Chinese': 70,'Math':75,
'English':72}]
score = {k['sid']:[k['Math'],k['English'],k['Chinese']]for k in studs}
print(score)
qq = list(score.items())
qq.sort()
for i in qq:
print(i[0],i[1],sep=':')
print()
实验结果
实验14
问题描述
定 义 函 数 is_prime 判 断 某 个 数 是 否 为 素 数 , 并 实 现 将 列 表
ls =[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] 中的素数去除,输出去除素数后的列表 ls以及ls中元素个数。
实验代码
ls=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
for i in ls:
for j in range(2,i):
if i%j==0:
break
else:
ls.remove(i)
print("去掉素数后1s列表为",ls)
print("去掉素数后1s列表长度为",1en(ls))
实验结果
实验15
问题描述
定义函数求两个数的最大公约数,并获得用户输入的数值 M 和 N,利用函数求 M和 N 的最大公约数。
提示:求最大公约数的步骤:
(1)将较大的数放在m,小数放在n
(2)用m除以n得到余数r
(3)判断r的值,若r为0,则最大公约数为n,否则执行(4)
(4)将上一个过程中的除数n作为被除数,余数作为除数,重复过程(2),直到余数r为0
实验代码
M=eval(input("请输入一个大值"))
N=eval(input("请输入一个小值"))
def cf(q,p):
r=q % p
if r ==0:
print("两个数的最大公约数为:",p)
else:
cf(p,r)
return
cf(M,N)
实验结果
实验16
问题描述
编写函数,计算 Fibonacci (斐波那契)数列,编写程序输入数字n,调用该函数计算斐波那契数列前n项的和。(斐波那契数列:1、1、2、3、5、8、13、21、……)
提示:可以使用递归函数
F(n) = F(n-1) + F(n-2) 其中(n>2), F1 = F2 =1
实验代码
def fb(n):
if n<=2:
return 1
else:
return fb(n-1)+fb (n-2)
a=0
for i in range(1,int(input("请输入求几项的和"))):
a+=int (fb(i))
print("和为",a)
实验结果
实验17
问题描述
定义一个圆柱体类Cylinder,包含底面半径r和高h两个属性。编写构造方法和计算圆柱体体积的方法,并对编写的相关程序进行测试验证。
实验代码
class Cylinder:
def __init_(self,r,h):
self.banjing=r
self.high=h
def jstj(self):
#定义一个PI的变里,用来计算
PI=3.14
#用tj来承载计算结果
tj=self.banjing**2*PI*self.high
print(“圆柱的体积为“,tj)
#从键盘输入值,并调用Cylinder类和其计算方法
a=eval(input("请输入半径值"))
b=eval(input("请输入高度值"))
C1=Cylinder(a,b)
C1.jstj()
实验结果
实验18
问题描述
设计一个表示动物的类:Animal,其内部有一个color(颜色)属性和call(动物叫)方法。再设计一个Dog(狗)类,该类中有tail(尾巴)和color(颜色)属性,以及一个call(动物叫)方法。要求让Dog类继承自Animal类,并重写init和call方法。
实验代码
class Animal:
def __init__(self,co):
self.color=co
def call(self):
print('这个动物有颜色,是',self.color,sep='')
print('这个动物会叫')
class Dog (Animal):
def __init__(self,ta,co):
self.tail=ta
self.color=co
def call(self):
print('这个狗爱摇',self.tail,sep='')
print('这个狗颜色是',self.color,sep='')
print ('这个狗偶尔叫')
#设置自类对象,调用自类方法
D1=Dog('尾色','灰色')
D1.ca11()
print()
#检验是否是成功重写,单独调用一次父类ca11方法
super(Dog,D1).call()
实验结果
实验19
问题描述
一小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
实验代码
x=100
h=50
for i in range(2,11):
x=x+2*h
h=h/2
print(x,h)
实验结果
实验20
问题描述
编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。
如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。
实验代码
n = eval(input())
if n % 400 == 0:
print(n,"闰年")
elif n % 4 == 0 and n % 100 != 0 :
print(n,"闰年")
else:
print(n,"平年")
实验结果
实验21
问题描述
编程从键盘输入任意多个数字,当按回车键时退出,结束输入,输出放存在列表ls中的数,并统计输出最大的数和最小的数及最大的数和最小的数的平均值。
实验代码
ls = []
n = eval(input("请输入数字(直接输入回车退出):"))
while n !=' ':
ls.append(n)
print("请输入数字(直接输入回车退出):")
while n ==' ':
break
print(ls)
#提示IOPub data rate exceeded,该代码有可能会超过IOPub数据速率,导致电脑卡顿
实验22
问题描述
韩信点兵的典故:韩信带1500名士兵去打仗,战死四五百人,3人一排多出2人,5人一排多出4人,7人一排多出6人,编程计算机剩下士兵的人数。
实验代码
for n in range(1000,1101):
if n % 3 == 2 and n % 5 == 4 and n % 7 == 6:
print("剩余士兵",n)
实验结果
实验23
问题描述
编写一个函数,从键盘上输入两个数,求最大公约数和最小公倍数,如果输入的第一个数小于第二个数时,需要交换 如:输入16,24 调用函数显示8,48
实验代码
a = int(input("a="))
b = int(input("b="))
m = max(a,b)
n = min(a,b)
r = m % n
x = m * n
while r != 0:
m = n
n = r
r = m % n
i = x / n
print(n)
print(int(i))
实验结果
实验24
问题描述
编写程序,在当前试题目录下创建一个文本文件test.txt,并向其中写入字符串hello world。
实验代码
file = open('test.txt','w')
file.write('hello world')
file = open('test.txt','r')
print(file.read())
file.close()
实验结果
实验25
问题描述
猴子第一天摘了若干个桃子,当天吃了一半,还不过隐,有多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子,问第一天共摘了多少个桃子
实验代码
x = 1
for i in range(0,9):
x = (x+1)*2
print("第一天摘了",x,"个桃子")
实验结果
以上就是本文全部内容,如果它对您有帮助,请您帮我点个赞,这对我真的很重要