飞道的博客

实验六 列表与元组 (下)

560人阅读  评论(0)

12.设有列表lst_odd=[1,3,5,7,9]和列表lst_even=[2,4,6,8,10]。试编写程序,将两个列表合并成一个新的列表,并将新列表按照元素的大小降序排列。不改变列表的元素。

lst_odd=[1,3,5,7,9]
lst_even=[2,4,6,8,10]
newlist=lst_odd.copy()
newlist.extend(lst_even)
newlist.sort()
print(newlist)

#输出结果

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

13.编写程序,对用户输入的英文字符串中出现的英文字母进行提取(不区分大小写,重复字母只记一次),并将提取的结果按照字母表升序排列后输出。例如,用户输入“I miss you.”,程序输出“i,m,o,s,u,y”或“I,M,O,S,U,Y”。

s=input("请输入一段英文:")
s=s.lower()
lst=[]
for c in s:
    if c.isalpha():
        if c not in lst:
            lst.append(c)
lst.sort()
print(lst)

#输出样例

请输入一段英文:I miss you
['i', 'm', 'o', 's', 'u', 'y']

14.编写程序,生成一年包含20个两位随机整数的列表,将其前十个元素升序排列,后十个元素降序排列。

import random
a=range(10,100)
lst=random.sample(a,20)
lst1=sorted(lst[:10])
lst[:10]=lst1
lst2=sorted(lst[10:],reverse=True)
lst[10:]=lst2
print(lst)

#输出样例

[12, 17, 33, 49, 51, 60, 61, 69, 81, 90, 79, 66, 64, 59, 55, 53, 43, 39, 30, 22]

15.编写程序,将用户输入的英文语句中的单词(忽略标点符号)进行逆序排列后输出。例如:用户输入“How are you”,则程序输出“you are How”。

def sentence_reverse(s):
    lst=s.split(" ")
    return " ".join(lst[-1::-1])

s1=input("请输入一段英文:")
s2=sentence_reverse(s1)
print(s2)

#输出样例

请输入一段英文:How are you
you are How

16.假设已有列表lst_floor=[1,4,2,5,7,3],存放了某电梯在一段时间内经过的楼层。试编写程序,实现以下功能。
(1)输出电梯的运行路线(“↑”表示上行一层,“↓”表示下行一层),结果如下:↑↑↑↓↓↑↑↑↑↑↓↓↓↓

lst_floor=[1,4,2,5,7,3]
for i in range(1,len(lst_floor)):
    end=lst_floor[i]
    start=lst_floor[i-1]
    if start<end:
        print("↑"*(end-start),end="")
    else:
        print("↓"*(start-end),end="")

#输出结果

↑↑↑↓↓↑↑↑↑↑↓↓↓↓

(2)假设运行路线为↑↑↓↓↓↑↑↓↑↑↑↑,且已知初始楼层为2楼,输出经过的各楼层,结果如下:2,3,4,3,2,1,2,3,2,3,4,5,6

route="↑↑↓↓↓↑↑↓↑↑↑↑"
lst_floor=[2]
floor=2
for ch in route:
    if ch=="↑":
        floor+=1
    else:
        floor-=1
    lst_floor.append(floor)
print(",".join([str(x) for x in lst_floor]))

#输出结果

2,3,4,3,2,1,2,3,2,3,4,5,6

17.假设已有列表lst_sides=[3,4,5,6,6,6,4,4,3],依次存放了三个三角形的三条边长,试编写程序,利用海伦公式计算每个三角形的面积,并将结果存入列表lst_area。

lst_sides=[3,4,5,6,6,6,4,4,3]
lst_area=[]
for i in range(0,len(lst_sides),3):
    a,b,c=lst_sides[i:i+3]
    p=(a+b+c)/2
    s=p*(p-a)*(p-b)*(p-c)
    lst_area.append(s)
print(lst_area)

#输出结果

[36.0, 243.0, 30.9375]

18.假设有字符串s=“语文:80,数学:82,英语:90,物理:85,化学:88,美术:80”,存放了某个学生的期末成绩。试编写程序,计算该学生所有科目的总分和平均分(保留一位小数)。

s="语文:80,数学:82,英语:90, 物理: 85,化学:88,美术:80"
lst_score=[]
for x in s.split(","):
    print(type(x))
    print(x)
    i=x.index(":")+1
    score=int(x[i:])
    lst_score.append(score)
zf=sum(lst_score)
print("总分:{}\n平均分:{:.1f}".format(zf,zf/len(lst_score)))

#输出结果

<class ‘str’>
语文:80
<class ‘str’>
数学:82
<class ‘str’>
英语:90
<class ‘str’>
物理: 85
<class ‘str’>
化学:88
<class ‘str’>
美术:80
总分:505
平均分:84.2

19.假设已有列表lst=[(“triangle”,“shape”),(“red”,“color”),(“square”,“shape”),(“yellow”,“color”),(“green”,“color”),(“circle”,“shape”)],其中每个元素都是一个元组。元组中的每一个元素表示值,第二个元素表示标签。试编写程序,完成以下功能:
(1)将列表lst中的元素按照标签排序后输出。
(2)将所有的颜色值从列表lst中提取出来,存入列表lst_colors,并将该列表输出。

lst=[("triangle","shape"),("red","color"),("square","shape"),("yellow","color"),("green","color"),("circle","shape")]
lst_new=[ [x[1],x[0]] for x in lst ]
print(lst_new)
lst_sort=sorted(lst_new)
print("按照标签排序后的列表:{}".format(lst_sort))
lst_colors=[x[1] for x in lst_sort if x[0]=="color"]
print("颜色列表:{}".format(lst_colors))

#输出结果

[[‘shape’, ‘triangle’], [‘color’, ‘red’], [‘shape’, ‘square’], [‘color’, ‘yellow’], [‘color’, ‘green’], [‘shape’, ‘circle’]]
按照标签排序后的列表:[[‘color’, ‘green’], [‘color’, ‘red’], [‘color’, ‘yellow’], [‘shape’, ‘circle’], [‘shape’, ‘square’], [‘shape’, ‘triangle’]]
颜色列表:[‘green’, ‘red’, ‘yellow’]

20.假设列表lst_suit=[“黑桃”,“红桃”,“梅花”,“方块”],存放了扑克牌的花色。列表lst_face=[“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”,“2”],存放了扑克牌的牌面大小,其元素已按照牌面大小升序排列。试编写程序,完成以下功能。
(1)利用列表生成式,将以上两个列表进行元素搭配,生成一个新的列表,存放所有牌面(不考虑大小王)。新列表lst的内容为:[“3黑桃”,“3红桃”,“3梅花”,“3方块”,“4黑桃”,“4红桃”,“4梅花”,“4方块”,…,“A黑桃”,“A红桃”,“A梅花”,“A方块”,“2黑桃”,“2红桃”,“2梅花”,“2方块”]。
(2)使用random库的shuffle()函数将列表lst中的元素次序打乱。
(3)用户与计算机进行“抽牌比大小”游戏。游戏规则如下。
用户输入序号(范围为0~51)。程序根据序号在列表lst中读取牌面。计算机抽牌由程序自动完成(通过random库中randint()函数随机生成序号)。将用户抽取的牌面与计算机抽取的牌面进行大小比较(不考虑花色),并将结果输出。三种输出内容对照如下:“恭喜,您输了!” “很遗憾,您输了” “咱们平手了!”

import random
lst_suit=["黑桃","红桃","梅花","方块"]
lst_face=["3","4","5","6","7","8","9","10","J","Q","K","A","2"]
lst=[x+y for x in lst_face for y in lst_suit]
random.shuffle(lst)
idx_user = int(input("请您抽一张牌(0~51):"))
card_user=lst[idx_user]
print("您抽到的牌是:{}".format(card_user))
idx_computer=random.randint(0,51)
card_computer=lst[idx_computer]
print("电脑抽到的牌是:{}".format(card_computer))
val_user=lst_face.index(card_user[0])
val_computer=lst_face.index(card_computer[0])
if val_user>val_computer:
    print("恭喜,您赢了!")
elif val_user<val_computer:
    print("很遗憾,您输了!")
else:
     print("咱们平手了!")

#输出样例

请您抽一张牌(0~51):8
您抽到的牌是:7红桃
电脑抽到的牌是:A梅花
很遗憾,您输了!

21.学校举办朗读比赛,邀请了10位评委为每一名参赛选手的表现打分。假设列表lst_score=[9,10,8,9,10,7,6,8,7,8],存放了某一位参赛选手的所有评委打分。试编写程序,根据以下规则计算该参赛选手的最终得分:
(1)去掉一个最高分
(2)去掉一个最低分
(3)最终得分为剩下8和分数的平均值

lst_score=[9, 10, 8, 9, 10, 7, 6, 8, 7, 8]
lst_score.sort()
lst_score.pop()
lst_score.pop(0)
print("该选手的最终得分为{}".format(sum(lst_score)/len(lst_score)))

#输出结果

该选手的最终得分为8.25

22.假设列表lst_weather中存放了一周的天气情况(包括最低气温、最高气温、天气状况、风力和空气质量质量等级)。试编写程序,统计一下数据:
(1)空气质量为优的天数
(2)风力低于3级且最高气温不超过25℃的天数
(3)平均气温低于20℃的天数
测试数据:lst_weather=[[“周一”,“16℃”,“26℃”,“多云”,“1级”,“优”],[“周二”,“17℃”,“27℃”,“晴”,“2级”,“优”],[“周三”,“16℃”,“28℃”,“晴”,“3级”,“优”],[“周四”,“16℃”,“25℃”,“阴”,“2级”,“良”],[“周五”,“15℃”,“24℃”,“阴”,“2级”,“良”],[“周六”,“15℃”,“25℃”,“晴”,“3级”,“优”],[“周日”,“14℃”,“23℃”,“小雨”,“3级”,“良”]]

lst_weather=[["周一", "16℃", "26℃","多云","1级","优"],[ "周二" ,"17℃", "27℃","晴","2级","优"],[ "周三","16℃", "28℃","晴","3级","优"],[ "周四","16℃", "25℃","阴","2级","良"],[ "周五","15℃", "24℃","阴","2级","良"],[ "周六", "15℃", "25℃","晴","3级","优"],[ "周日","14℃", "23℃","小雨","3级","良"]]
number_condition1=[x[0] for x in lst_weather if x[5]=="优"]
print("空气质量为优的天数:{},它们分别是:{}".format(len(number_condition1),",".join(number_condition1)))
number_condition2=[x[0] for x in lst_weather if (int(x[2][:-1])<=25 and int(x[4][:-1])<3)==True]
print("风力低于3级且最高气温不超过25℃的天数:{},它们分别是:{}".format(len(number_condition2),",".join(number_condition2)))
number_condition3=[x[0] for x in lst_weather if (int(x[1][:-1]) + int(x[2][:-1]))/2<20]
print("平均气温低于20℃的天数:{},它们分别是:{}".format(len(number_condition3),",".join(number_condition3)))

#输出结果

空气质量为优的天数:4,它们分别是:周一,周二,周三,周六
风力低于3级且最高气温不超过25℃的天数:2,它们分别是:周四,周五
平均气温低于20℃的天数:2,它们分别是:周五,周日


转载:https://blog.csdn.net/m0_51346837/article/details/116002641
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场