第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(