第1关:字符串去重排序
任务描述
输入一个非空字符串,去除重复的字符后,从小到大排序输出为一个新字符串。
输入格式
一个非空字符串
输出格式
去重排序后的字符串
示例
- 输入:
Life is short, you need Python!
- 输出:
!,LPdefhinorstuy
参考代码
print(''.join(sorted(set(input()))))
第2关:列表去重
任务描述
输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。
输入格式
一系列以逗号分隔的英文人名
输出格式
包含不重复人名的列表,名字出现顺序与输入顺序相同
示例 1
- 输入:
Calvin,bob,ada,McCord,Smith,Babbs,Calvin,Smith
- 输出:
['Calvin', 'bob', 'ada', 'McCord', 'Smith', 'Babbs']
参考代码
res = []names = input().split(',')for name in names:if name not in res:res.append(name)print(res)
第3关:猜年龄
任务描述
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请编程输出当年维纳的年龄。
输入格式
该题目没有输入
输出格式
一个正整数(维纳当年的年龄)
示例
- 输出:
9
参考代码
age1 = age2 = 0while age1**3 < 10000:age1+= 1while True:b = age2**4if b >= 100000 and b < 1000000:breakage2 += 1 for i in range(age2, age1):num1 = i**3num2 = i**4res = set(str(num1)+str(num2))if len(res) == 10:print(i)
第4关:集合的属性、方法与运算
任务描述
将用户输入用空格分隔的一系列地名创建集合MySet,输入一个正整数 n,你将被要求读入 n 个输入(输入形式如下所示),每得到一个输入后,根据输入进行操作。
add name: # 在集合中加入元素nameprint:# 将集合转为列表,按元素升序排序后输出列表del name: # 删除集合中的元素name,当name不存在时,不能引发错误update name:# name为空格逗号分隔的字符串,将其转为集合,并用name中的元素修改集合MySetclear:# 清空集合
输入格式
第一行输入一个正整数 n
输出格式
每遇到“print”时,将集合转为列表,按元素升序排序后输出列表
示例
- 输入:
8湖北 湖南 吉林printdel 湖北printclearadd 江西add 河北update 北京 上海 天津 重庆print
- 输出:
['吉林', '湖北', '湖南']['吉林', '湖南']['上海', '北京', '天津', '江西', '河北', '重庆']
参考代码
n = int(input()) name = input()Set = set(name.split())for i in range(n):List = input().split() if List[0] == 'print':print(sorted(list(Set)))elif List[0] == 'update': Set.update(set(List[1:]))elif List[0] == 'add': Set.add(List[1])elif List[0] == 'del':Set.discard(List[1])elif List[0] == 'clear':Set.clear()
第5关:集合介绍
任务描述
集合是一个无序的、没有重复元素的数据类型,在输出或转为序列类型时,其元素位置随机出现。
例如:
print(set())# 产生空集合 set()print(set('Hello Python'))# 字符串转集合,去掉重复字符 {'t', 'h', 'P', 'H', 'l', 'e', 'y', 'o', ' ', 'n'}print(set((1, 2, 3, 4, 5, 5)))# 元组转集合,去掉重复元素 {1, 2, 3, 4, 5}print(set(set(['H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n'])))#列表转集合,去掉重复元素{'t', 'h', 'P', 'H', 'l', 'e', 'y', 'o', ' ', 'n'}print(set([1, 2, 1, 2, 3, 4, 5, 6, 0, 9, 12, 22, 3]))# 列表转集合,去掉重复元素 {0, 1, 2, 3, 4, 5, 6, 9, 12, 22}print(set({ 'University': 'WHUTI', 'Rank': 40}))# 字典转集合,返回字典的键(字典的键唯一),不确定顺序 {'Rank', 'University'}print(set(enumerate(['H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n'])))# {(8, 't'), (2, 'l'), (7, 'y'), (3, 'l'), (4, 'o'), (5, ' '), (6, 'P'), (9, 'h'), (11, 'n'), (0, 'H'), (1, 'e'), (10, 'o')}
李白是一个社区大学的老师,一天,他让学生小明计算一下温室里植物的平均高度。
平均高度 = 不同高度的和 / 不同高度的数量
输入格式
输入N
个用空格分隔的植物的高度
输出格式
在一行内输出植物的平均高度,保留小数点后3位
示例
- 输入:
161182161154176170167171170174
- 输出:
169.375
参考代码
def average(array):Set = set(array)return sum(Set)/len(