Python.课本第四章例题

python 

# 例4-3
# 这道题练习使用 min(),max(),sum()函数
# score = eval(input('请输入十个学生的成绩:'))
# mi = min(score)
# mx = max(score)
# n = len(score)
# s = sum(score)
# print('最高分',mx)
# print('最低分',mi)
# print('平均值',s/n)


# score = eval(input('请输入十个学生的成绩:'))
# mi = min(score)
# mx = max(score)
# print('最高分{},最低分{},平均值{}'.format(mx,mi,sum(score)/len(score)))


# 例4-4 筛选法求素数(以300以内素数为例) 主要体会一下方法,因为求素数有其他简单的方法
# 通过验证 是否能被已知素数整除 的方法在指定范围内筛选出素数
# 使用长度为300的列表这300个数是连续变化的,与列表索引是一致的,换成其他若是不连续,可能就不行了

# 是素数用1标记,不是素数用0标记
# 把300个数先全部标记为1,即设全部为素数

'''primes = [1] * 300
primes[0:1+1] = [0,0]
for i in range(2,300):
    # if primes[i] == 1: # 把这个注释掉也没影响,因为上一步都已经给后面都赋为1了
        for j in range(i+1,300):
            if j % i == 0:  # primes[j] != 0 and  if条件加不加这个也没影响结果
                primes[j] = 0
print('300以内的素数包括:')
for i in range(2,300):
    if primes[i]:
        print(i,end=' ')'''



# 例4-5 二分查找 体会一下方法
# 前提是适用于顺序排好的一个序列
'''ls = [34,64,72,75,86,90,96,100]
x = eval(input('请输入要查找的数:'))
left = 0
right = len(ls) - 1 # 长度-1 才是位置索引
while left < right:  # 循环条件
    mid = (left + right) // 2 # 求中间值
    if ls[mid] > x:  # 说明x在左半边,需要把右侧范围缩小
        right = mid - 1 #
    elif ls[mid] < x:
        left = mid + 1 # 
    else:
        print('找到{},索引{}'.format(x,mid))
        break
else:
    print('没有找到',x)'''


# 例4-6 问卷调查 ‘满意不满意’ 用列表统计每个评语出现的次数并求最大值,找出出现最多的评语

'''result ="不满意,一般,很满意,一般,不满意,很满意,满意,一般,一般,"\
"不满意,满意,满意,满意,满意,满意,一般,很满意,一般,满意,"\
"不满意,满意,一般,不满意,满意,不满意,满意,很满意,很满意,"\
"满意,满意,不满意,满意,不满意,满意,一般,很满意,不满意,"\
"一般,很满意,满意,很满意,不满意,很满意,不满意,很满意,"\
"满意,满意,很满意,一般,很满意 ,满意,满意,很满意,不满意,"\
"很满意,满意,不满意,满意,不满意,满意,很满意,满意,很满意,"\
"一般,很满意,很满意,很满意,不满意,满意,一般,一般,一般,"\
"一般,不满意,不满意,满意,很满意,很满意,满意,满意,很满意,"\
"很满意,一般,一般,很满意,一般,一般,满意,很满意,一般,"
# print(result)
comments = ['很满意','满意','一般','不满意']
resultList = result.split(',')  # 把字符串转化为列表
# print(resultList)
cCount = [0]*4  # 设置一个列表 用来放置 每个评价出现的 次数,占4位
# print(cCount)
for i in range(4):
    cCount[i] = resultList.count(comments[i]) # 统计 评价列表 中各个评价的出现的次数,各个评价用comment[i]表示
# print(cCount) # [24, 28, 20, 17]  这每个位置与上面comments列表元素的索引位置是对应的
most = max(cCount) # 统计出现次数最多的
print(most)
mostcomment = comments[cCount.index(most)] # 出现次数最多的那个评价赋给mostcomment
# print(cCount.index(most))
# print(mostcomment)
print('根据统计,大家对今天伙食感觉:')
for i in range(4):
    print('{}的学生{}人'.format(comments[i],cCount[i]))
print('调查的结果中,出现次数最多的是',mostcomment)'''
# 用字典来写这道题

result ="不满意,一般,很满意,一般,不满意,很满意,满意,一般,一般,"\
"不满意,满意,满意,满意,满意,满意,一般,很满意,一般,满意,"\
"不满意,满意,一般,不满意,满意,不满意,满意,很满意,很满意,"\
"满意,满意,不满意,满意,不满意,满意,一般,很满意,不满意,"\
"一般,很满意,满意,很满意,不满意,很满意,不满意,很满意,"\
"满意,满意,很满意,一般,很满意,满意,满意,很满意,不满意,"\
"很满意,满意,不满意,满意,不满意,满意,很满意,满意,很满意,"\
"一般,很满意,很满意,很满意,不满意,满意,一般,一般,一般,"\
"一般,不满意,不满意,满意,很满意,很满意,满意,满意,很满意,"\
"很满意,一般,一般,很满意,一般,一般,满意,很满意,一般"\


lss = result.split(',')

# print(lss)
# ['不满意', '一般', '很满意', '一般', '不满意', '很满意', '满意', '一般', '一般', '不满意', '满意', '满意', '满意', '满意', '满意', '一般', '很满意', '一般', '满意', '不满意', '满意', '一般', '不满意', '满意', '不满意', '满意', '很满意', '很满意', '满意', '满意', '不满意', '满意', '不满意', '满意', '一般', '很满意', '不满意', '一般', '很满意', '满意', '很满意', '不满意', '很满意', '不满意', '很满意', '满意', '满意', '很满意', '一般', '很满意', '满意', '满意', '很满意', '不满意', '很满意', '满意', '不满意', '满意', '不满意', '满意', '很满意', '满意', '很满意', '一般', '很满意', '很满意', '很满意', '不满意', '满意', '一般', '一般', '一般', '一般', '不满意', '不满意', '满意', '很满意', '很满意', '满意', '满意', '很满意', '很满意', '一般', '一般', '很满意', '一般', '一般', '满意', '很满意', '一般']

dic = {}
for i in lss:
    dic[i] = dic.get(i,0) + 1
print('各个评语出现的次数')
print(dic)
# {'不满意': 17, '一般': 20, '很满意': 25, '满意': 28}

ls2 = sorted(dic.items(),key = lambda x:x[1],reverse=True)
print('出现评语最多的是\'{:}\',次数为{:}'.format(ls2[0][0],ls2[0][1]))
# 出现评语最多的是'满意',次数为28
# 例4-7 模拟投掷两个骰子100 000次,统计各点数出现的概率

# 选择生成两个1-6的随机数
# 两个骰子最小为2,最大为12
# 出现点数的范围2-12
# 用一个列表储存各个点数总共出现的次数,列表长度设置为13,0-12
# 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#     2 3 4 5 6 7 8 9 10 11 12
# 0 1 2 3 4 5 6 7 8 9 10 11 12  长度为13
# 这样设置 刚好索引下标就是对应的点数

'''from random import *
faces = [0]*13  #设置每个点数出现的次数最开始都给初始化为0
for i in range(100000):
    face1 = randint(1,6)
    face2 = randint(1,6)
    faces[face1+face2] += 1  # 对应的点数之和出现一次 次数就加一次
print('模拟两个骰子100000次结果如下:')
for i in range(2,12+1):
    print('点数{}出现了{}次,出现概率为{:.3%}'.format(i,faces[i],faces[i]/100000))'''

# 例4-7 下午茶搭配套餐  A B C D 搭配 1 2 3
# 配对问题,可以设两个列表
# 用嵌套的二重for循环遍历配对

'''z = ['A','B','C','D']
n = [1,2,3]
s = []
for item1 in z:
    for item2 in n:
        m = (item1,item2)  # 用到了元组
        s.append(m)    # 往s空列表里追加元素
print('下午茶搭配套餐:')
for item in s:
    print(item)'''

# 使用列表生成式
'''z = ['A','B','C','D']
n = [1,2,3]
s = [(item1,item2) for item1 in z for item2 in n]
print('下午茶搭配套餐:')
for item in s:
    print(item)'''

# 例 4-9 对嵌套列表进行切块分析
# tables = [['萧峰',20,17,20,20,18,19],
#           ['杨过',18,19,17,20,18,18],
#           ['令狐冲',12,17,14,20,19,13],
#           ['张无忌',20,17,15,14,20,20],
#           ['郭靖',19,18,19,18,19,20]]
#  统计每个项目的平均分并输出,统计每个人的总得分并输出,找到总分最高的大侠

'''tables = [['萧峰',20,17,20,20,18,19],
          ['杨过',18,19,17,20,18,18],
          ['令狐冲',12,17,14,20,19,13],
          ['张无忌',20,17,15,14,20,20],
          ['郭靖',19,18,19,18,19,20]]
names = [item[0] for item in tables]
# print(names)
scores = [item[1:] for item in tables]
# print(scores)
totals = [sum(item) for item in scores]
# print(totals)
avgs = []
# 每个项目的平均分 为列,要提取列,外循环要先定列
for j in range(0,5+1):
    avgs.append(sum([scores[i][j] for i in range(0,4+1)])/5)
# print(avgs)
print('五位大侠的总分:')
for i in range(5):
    print('{:<4}:{}'.format(names[i],totals[i]))
print('不同属性的平均分:')
for i in range(5):
    print('{:<4}:{:.2f}'.format(names[i],avgs[i]))
print("总分最高的大侠是:",names[totals.index(max(totals))])'''
  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值