Python内建数据结构的使用

本文介绍了如何用Python实现水果价格表的打印,歌唱比赛打分逻辑(剔除最高分和最低分),整数分解为最大和最小,统计英文段落词频,以及一个烧脑游戏的编写。展示了列表操作、数据处理和随机数生成等技术的应用。
摘要由CSDN通过智能技术生成

1、按照以下格式打印水果价格表。

image.png

提示:
(1)上下两行中的符号是等号,中间的横线是单横线,打印宽度是30个。
(2)水果的价格存入一个字典中,水果名为key值,价格为value值。
(3)输出时,水果名和价格分两部分输出,每个15个字符,水果名左对齐,价格中间对齐。比如,表头部分的输出语句为:
print(“{:<15s}{:^15s}”.format(“Item”,“Price”))

image.png

2、请为一个歌唱比赛的歌手打分环节编写一个程序,每个歌手表演完毕后,现场的10个评委为其进行打分,评分规则为去掉一个最高分,去掉一个最低分,然后计算平均分即为歌手的成绩。假设输入数据中10个评委的成绩按照一行输入,两个数据之间用一个逗号分隔。

提示:(1)最高分和最低分用min和max即可获取;(2)利用remove函数即可去除列表元素;(3)求平均值利用sum函数求取各元素的和除以len函数获取的元素个数即可获得。

image.png

示例代码:
st=eval(input())
st.remove(max(st))
st.remove(min(st))
grade=sum(st)/len(st)
如果还想保留最大值和最小值,则可以利用sorted函数对列表进行排序,然后计算下标从1到-2之间元素的和除以总长度,示例代码为:
st=eval(input())
st=sorted(st)
sum(st[1:-1])/(len(st)-2) #注意切片的使用

3、输入一个整数,然后用这个整数中的个位数组成一个最大的整数和一个最小的整数后输出。如用户输入32450089,则最大整数位98543200,最小的整数为234589。

提示:本题目相对比较简单,input函数返回值为字符串类型,因此直接对字符串按照降序排列形成一个字符串,将其利用int函数转换为整数即为各位上的整数组成的最大整数;然后将降序排列的字符串反序后利用int函数转换即可得到最小的整数。

image.png

s=input()

s=sorted(s,reverse=True)

x=int(“”.join(s))

ss=s[::-1]

y=int(“”.join(s[::-1]))

print(x,y)

4、统计一个英文段落中的词频。

提示:
(1)需要用到字符串、列表、集合、字典等数据类型的综合使用。
(2)利用字符串的split函数可以分割单词,注意在分割前用replace函数将各类符号转换为空格,同时由于大小写会影响单词统计的结果,因此应该将所有单词都转化为小写后进行统计。
(3)分割后的结果中存在单词重复的情况,因此需要将其转换为一个集合,以去除重复单词;
(4)统计一个单词的出现次数可以使用列表的count函数;
(5)统计出的各单词的频率数据可以存储到一个字典中。

image.png

例如:统计一下英文故事中的词频。

Once upon a time, there lived a monkey in the woods. The monkey climbed up the tree and looked down at the river everyday.

One day, the monkey saw fishermen throw a net over the river. He watched how the fishermen caught fish.

Sometime after, the fishermen left the net and went to have lunch. Then, the monkey climbed down from the tree and went to the riverside. The monkey was planning to throw the net like the fishermen did.

The monkey was confident since he was good at imitating. Yet, the net wound around the monkey when he touched it. Tied up in the net, the monkey fell into the water.

The monkey regretted his behavior, but it was too late. “I should have learned how to use the net before touching it. After believing my prowess and showing off, I am in a bad fix.” The monkey who did not behave carefully drowned in the water.

输出结果为:

参考代码:

for i in “.,'”?\n":

strstory=strstory.replace(i," ")

strstory = strstory.lower()

words=strstory.split()

#print(words)

words2=set(words)

dic={}

for i in words2:

dic\[i\]=words.count(i)

#stdic=list(dic.items())

print(stdic)

5、接收一个整数序列(包含10个整型数)和一个整型数k,将列表下标k之前(不包含k)对应的元素逆序,将下标k及之后的元素逆序。输出处理后的列表。

输入数据中列表的10数据占一行,两个数据之间用逗号分隔,整数k在第二行。

运行截图为:

提示:本题目主要考察列表或元组的切片、列表元素更新或元组的加法运算等知识的熟练使用。

image.png

参考代码:
本题目中可以用列表存储序列数据,由于列表是可变数据类型,可以对列表元素进行更新。

x=list(eval(input())) #eval处理的结果是一个元组,需要将元组转换为列表

k=int(input())

if k<0 or k>len(x):

print('error!')

else:

x\[:k\]=x\[:k\]\[::-1\]  

#提取0到k-1之间的元素形成列表,然后反序后赋值给0到k-1的元素

x\[k:\]=x\[k:\]\[::-1\]

print(x)
本题目也可以用元组存储列表元素,然后处理后利用元组的加法形成新的元素后输出。参考代码如下:

x=eval(input())

k=int(input())

if k<0 or k>len(x):

print('error!')

else:

xleft=x\[:k\]

xright=x\[k:\]

xleft=xleft\[::-1\]

xright=xright\[::-1\]

x=xleft+xright

print(x)

6、编写一个烧脑游戏,系统随机生成4个各不相同的数字组成一个序列,玩家猜测这个序列。在7次内输入成功,则胜利;每次玩家输入一个序列,系统给出提示,提示中A表示四个数中相应位置上数字正确的个数,B表示数字正确但是位置不正确的数字。比如,系统生成0278的序列,而用户输入的为0123,则系统提示为1A1B,玩家根据提示继续猜测,直到猜测成功或者达到7次游戏失败。

提示:(1)随机生成四个各不相同的数字用random对象的sample方法,从range(0,10)对象中随机选取4个元素生成一个列表。但是,列表中每个元素的数据类型为int。需要调用str函数将其转换成字符,不然’0’==0判断结果为False。
(2)用户输入通过input接收后返回的是一个字符串,需要转换成列表。当用户输入的数字个数超过4个时,给出错误提示。
(3)用户不想继续玩游戏时输入“no”或者“NO”结束游戏。不区分大小写。

image.png

参考代码:

#这是一个非常烧脑的游戏

import random

def init():

random.seed()

return random.sample(range(0,10),4)

def guess(al):

al=map(str,al)

al=list(al)

#print(al)

for i in range(7):

    an=input('第%d次猜测:'%(i+1))

    stn=list(an)

    if an.isdigit()==False and an.lower()=='no':

        print('不想玩了就退出吧,答案是:',al,sep="")

        break

    if(len(stn)!=4):

        print('input is error')

        continue

    if(stn==al):

        print("you are so good!")

        break

    a,b=0,0

    for j in range(4):

        if stn\[j\] in al:

            b+=1

        if stn\[j\]==al\[j\]:

            a+=1

    b=b-a

    print("%dA%dB"%(a,b))

else:

    print('you are so ...,result is ',"".join(al))

guess(init())

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值