《Python语言程序设计》实验二
一、实验项目:Python语言序列数据结构2
1.字典运算及应用
2.集合运算及应用
3.可迭代对象应用
4.理解并运用内置函数enumerate(),以及选择结构和循环结构。
二、实验目的
1.熟悉Python语言程序开发环境的代码编辑、调试、运行和结果输出功能。
2.熟悉和掌握字典和集合数据结构的定义。
3.熟悉和掌握字典、集合数据结构的应用。
4.利用序列数据结构求解问题。
5.通过问题求解训练数理逻辑解决问题的能力。
6.通过问题求解训练计算思维;
7.通过问题求解训练编程技术,积累代码量和解决实践问题的能力。
三、实验内容
1.编写程序,从键盘输入任意大的自然数,然后打印输出各位数字之和。
2.编写程序, 首先自主创建两个集合SetA和SetB,然后分别输出它们的交集、并集、差集(SetA-SetB)和补集。(要求用两种方法解题)。
3.编写程序,首先自主创建两个长度不同的列表并打印输出,然后对这个列表进行排序,一个升序,另一个降序,最后根据排序后的两个列表创建一个字典并输出该字典。
4.编写程序,自主构建一个整数列表,然后输出列表中所有整数连乘的结果。
5.你会编写程序计算圆周率吗?查找资料学习蒙特·卡罗方法(通过概率统计得到问题近似解的方法),然后编写程序求解并打印输出圆周率。
6.编写程序,完成如下功能:(1)创建一个具有10个元素的字典;(2)读取用户从键盘输入的键,然后输出字典中对应该键的“值”,如果用户输入的键不在,则输出“您输入的键在字典中不存在”;(3)如果从键盘读入的是字符串“Q”或者“q”,则退出程序。(提示:创建的字典自己自主;可以用exit()使程序退出)。
7.编写程序,按照如下步骤:(1)分别创建2个包含若干元素且长度不同的列表,并打印输出2个列表;(2)使用第(1)步创建的2个列表来创建1个字典;(3)计算并输出字典长度;(4)打印输出整个字典;(5)输出该字典中一个一个的元素对。
8.编写程序,创建一个字符串,输出其中出现次数最多的字符及其出现的次数,要求使用字典。(欢迎用多种方法实现)
9.输入一个大于2的自然数,输出小于该数字的所有素数组成的集合。
10.使用枚举法验证6174猜想:1955年,卡普耶卡对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个 *** 作,最终会得到6174这个数字,并且这个 *** 作不会超过7字。要求:使用枚举法对这个猜想进行验证。
11.模拟决赛现场最终成绩计算过程。编写程序,模拟决赛现场最终成绩计算过程。首先从键盘输入大于2的整数作为评委数量;然后依次输入每个评委的打分,要求每个分数都介于0~100之间。输入完所有评委打分之后,去掉一个最高分,去掉一个最低分,剩余分数的平均分即为该选手的最终得分。
12.根据下面的数据,设计和实现雷达图。
课程 | C++ | Python | 高数 | 大学英语 | 电路 | 软件工程 | 计算机网络 | 数据结构 |
成绩 | 80 | 95 | 78 | 85 | 50 | 72 | 82 | 90 |
参考:建议采用第三方库numpy和matplotlib画出雷达图展示某学生8门课程成绩。参考代码如下。
四、实验设计(计算思维思想设计)
1.代码如下:
n = eval(input("请输入一个自然数:"))
sum = 0
while n != 0:
n1 = n % 10
sum += n1
n = n // 10
print(sum)
2.代码如下:
SetA = {'Adam','Lisa','Bart','余凤林'}
SetB = {'Adam','哈哈','李四','余凤林'}
#求交集1
print(SetA & SetB)
#求并集1
print(SetA | SetB)
#求差集1
print(SetA - SetB)
#求补集
print(SetA ^ SetB)
#求交集2
print(SetA.intersection(SetB))
#求并集2
print(SetA.union(SetB))
#求差集2
print(SetA.difference(SetB))
3.代码如下:
L1 = ['yu','feng','lin','haha']
L2 = [88,99,66]
print(L1)
print(L2)
#对L1按照长度进行升序 *** 作
L1.sort(key = len)
print(L1)
#对L2按照数值大小进行降序 *** 作
L2.sort(reverse = True)
print(L2)
#将两个列表合成一个字典
print(dict(zip(L1,L2)))
4.代码如下:
L = [1,2,3,4,5]
sum = 1
for i in L:
sum = sum * i
print(sum)
5.代码如下:
from random import random
DARTS = 10000 * 10000 #撒点总个数
hits = 0.0
for i in range(1,DARTS + 1):
x, y = random(),random()
dist = pow(x ** 2 + y ** 2,0.5)
if dist < 1:
hits += 1 #落在圆内的个数
pi = 4 * (hits / DARTS)
print("圆周率的值是:{}".format(pi))
6.代码如下:
d = {'y': 2,'u': 4,'f': 6,'e': 8,'n': 10,'g': 1,'l': 7,'i': 8,'y': 9,'q': 10}
y = input("请输入字符:")
if y== 'q' or y=='Q':
exit()
print(d.get(y,"您输入的键在字典中不存在。"))
7.代码如下:
#创建2个长度不同的列表,并打印输出2个列表
L1 = ['yu','feng','lin','haha']
L2 = [88,99,66]
print(L1)
print(L2)
#输出字典长度
d = dict(zip(L1,L2))
#计算字典长度
print(len(d))
#打印输出整个字典
print(dict(zip(L1,L2)))
#输出整个字典中一个一个的元素对
for k in d:
print(k,d[k])
8.代码如下:
s = str(input("请输入一个字符串:"))
d1 = {}
for i in s:
d1[i] = d1.get(i,0) + 1
print(d1)
temp = max(d1.values())
for y,u in d1.items():
if u == temp:
print(y,'出现了',u,'次')
9.代码如下:
n = int(input("请输入一个自然数:"))
s1 = set()
i = 2
while i <= n:
j = 2
while j <= (i/2):
if i % j == 0:
break;
j = j + 1
if j > (i / 2):
s1.add(i)
i = i + 1
print(s1)
10.代码如下:
import itertools
s=list(itertools.combinations(range(10),4))
flag=False
for i in s:
snum=''.join(list(map(lambda x: str(x),i)))
count=0
flag=False
for j in range(7):
l=sorted(snum)
min=int(''.join(l))
max=int(''.join(reversed(l)))
if(max-min==6174):
flag=True
break
else:
snum=str(max-min)
if(flag==False):
break
if(flag):
print('6174猜想正确!')
else:
print('6174猜想错误!')
11.代码如下:
while True:
try:
n=int(input('请输入评委人数:'))
if n<=2:
print('评委人数太少,必须多于两个人')
else:
break
except:
pass
scores=[]
for i in range(n):
while True:
try:
score=input("请输入第{0}个评委的分数:".format(i+1))
score=float(score)
assert 0<=score<=100
scores.append(score)
break
except:
print("分数错误")
highest=max(scores)
lowest=min(scores)
#去掉最高分和最低分
scores.remove(highest)
scores.remove(lowest)
final=round(sum(scores)/len(scores),2)
formatter='去掉一个最高分{0}去掉一个最低分{1}最终得分是{2}'
print(formatter.format(highest,lowest,final))
12.代码如下:
import numpy as np
import matplotlib.pyplot as plt
courses = ['C++','Python','高数','大学英语','电路','软件工程','计算机网络','数据结构']
scores = [80,95,78,85,50,72,82,90]
datalength = len(scores)
angles = np.linspace(0,2 * np.pi,datalength)
endpoint=False
plt.polar(angles,scores,"r",lw=2)
plt.thetagrids(angles * 180 / np.pi,courses,fontproperties="simhei")
plt.ylim(0,100)
plt.savefig('helland_radar.jpg')
plt.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)