任务描述
元组看起来犹如列表,但元组使用圆括号()
而不是[]
来标识,而且列表的元素可以修改,但元组的元素不能修改。本关介绍元组的常见使用方法以及元组和列表的使用区别。下面用饭店菜单的例子来说明列表和元组使用的应用场景。
现在有一个餐馆要向每个包厢都投放两份菜单,菜单上有4
种菜名,我们想将两个菜单上最后一道菜名互换一下,也想快速知道改变后的两份菜单上单词首字母最大的菜名。而我们首先需要判断该用列表的方法还是元组的方法实现这个目标。
为了实现这个目标,我们需要先学习元组的相关使用知识以及元组与列表的区别。
相关知识
元组与列表
元组与列表很相似,两者之间的差别在于,列表在初始化后其中的元素还可以进行增删改等操作,但是元组在初始化后其中的元素不能进行更改,列表在赋值时使用方括号[]
,而元组在赋值时使用小括号()
。因为元组具有不可变的特性,所以在能用元组替代列表的地方最好都使用元组,这样代码更安全。
创建元组
元组创建很简单,只需要在括号()
中添加元素,元素之间用逗号隔开。元组中只包含单个元素时,需要在该元素后面添加逗号,例如:
menu1 = ('meat','fish','chicken')
menu2 = ('meat',)
访问元组
元组和列表一样,可以使用下标索引来访问元组中的值,例如:
menu = ('meat','fish','chicken','carrot')
print(menu[0])
print(menu[1:3])
输出结果:
meat
('fish', 'chicken')
修改元组
元组中的元素值是不可以修改的,如果强行修改会报错,例如如果我们想修改元组menu
中的某个值:
menu = ('meat','fish','chicken','carrot')
menu[0] = 'pizza'
print(menu[0])
输出结果:
TypeError: 'tuple' object does not support item assignment
系统会自动报错,元组中的元素值不支持修改。
元组内置函数
元组和列表一样,都有一些内置函数方便编程。例如:
len(tuple)
:计算元组中元素个数。
max(tuple)
:返回元组中元素的最大值。
min(tuple)
:返回元组中元素的最小值。
tuple(seq)
:将列表转换为元组。
元组中的元素是不能改变的,它也没有append()
,insert()
这样的方法。但其他获取元素的方法和列表是一样的。
编程要求
本关的编程任务是补全src/Step1/menu_test.py
文件的代码内容,实现如下功能:
-
将输入的菜单
menu_list
转换为元组类型 -
打印输出生成的元组
-
打印输出元组中首字母最大的元素
本关涉及的代码文件src/Step1/menu_test.py
的代码框架如下:
# coding=utf-8
# 创建并初始化munu_list列表
menu_list = []
while True:
try:
food = input()
menu_list.append(food)
except:
break
# 请在此添加代码,对menu_list进行元组转换以及元组计算等操作,并打印输出元组及元组最大的元素
###### Begin ######
####### End #######
测试说明
本关的测试文件是src/Step1/menu_test.py
,测试过程如下:
-
平台自动编译并运行
menu_test.py
,并以标准输入方式提供测评输入; -
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/Step1/menu_test.py
的样例测试集:
测试输入:
pizza
chicken
carrot
turkey
banana
预期输出:
('pizza', 'chicken', 'carrot', 'turkey', 'banana')
turkey
开始你的任务吧,祝你成功!
menu_list = [] # 初始化新列表
while True: # 利用while循环读入菜单
try:
food = input()
menu_list.append(food)
except:
break
print(tuple(menu_list)) # 将列表转换为元组
menu_list.sort() # 利用sort函数对元组内数据进行排序
b=menu_list
print(b[-1]) # 打印出最大值