《Python语言程序设计》实验二

《Python语言程序设计》实验二,第1张

《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()

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存