目录
第一关 字符串去重排序
ls = list(set(input())) # 字符串转集合去重,再转为列表
ls.sort() # 列表排序
print(''.join(ls)) # 列表中的字符串元素连接为一个字符串
第二关 列表去重
name_list = input().split(',') # 将输入的人名分割成列表
result = []
for name in name_list:
if name not in result:
result.append(name) # 如果名字不在结果列表中,则加入
print(result)
第三关 猜年龄
for age in range(11, 23):
age_3 = age ** 3 # 年龄的立方
age_4 = age ** 4 # 年龄的4次方
num_1 = age_3 // 1000 # 4位数的千位数字
num_2 = age_3 % 1000 // 100 # 4位数的百位数字
num_3 = age_3 % 100 // 10 # 4位数的十位数字
num_4 = age_3 % 10 # 4位数的个位数字
num_5 = age_4 // 100000 # 6位数的十万位数
num_6 = age_4 % 100000 // 10000 # 6位数的万位数
num_7 = age_4 % 10000 // 1000 # 6位数的千位数
num_8 = age_4 % 1000 // 100 # 6位数的百位数
num_9 = age_4 % 100 // 10 # 6位数的十位数
num_0 = age_4 % 10 # 6位数的个位数
if (num_1 != num_2 != num_3 != num_4 != num_5 != num_6 != num_7 != num_8 != num_9 != num_0) and (age_4 > 100000):
print(age)
break
第四关 集合的属性、方法与运算
n = int(input()) # 输入一个正整数 n
name = input() # 吉林,湖北,湖南
MySet = set(name.split())
MyList = name.split()
for i in range(n):
ls = input().split() # 输入命令及参数,之间用空格分隔
if ls[0] == 'print': # 如要输入的命令是“print”,输出字典
print(sorted(list(MySet)))
elif ls[0] == 'update': # 如要输入的命令是“update”,更新ls[1]表示的键对应的值
MySet.update(set(ls[1:]))
elif ls[0] == 'add': # 如要输入的命令是“add”,增加一个键值对,题目确保输入的键在字典中不存在
MySet.add(ls[1])
elif ls[0] == 'del': # 如要输入的命令是“del”,删除字典中指定的键值对,键不存在时返回“键不存在”
MySet.discard(ls[1])
elif ls[0] == 'clear': # 如要输入的命令是“clear”,清空字典中全部元素
MySet.clear()
第五关 集合介绍
def average(array):
set1 = set(array)# 将重复元素删除
num = len(set1)# 计算初数量的总数
Sum = 0
for i in set1:# 循环计算出总数
Sum+=i
return f"{(Sum / num):.3f}"
#你的代码写在这里list里面现在是整形的元素
if __name__ == '__main__':
arr = list(map(int, input().split())) # map()函数用于将列表中的每个元素都转换为整数
result = average(arr)
print(result)
第六关 手机销售统计
with open('step7/sale2019.csv', 'r', encoding='utf-8') as data2019:
sale2019 = [[line.strip().split(',')[0], float(line.strip().split(',')[1])] for line in data2019]
with open('step7/sale2018.csv', 'r', encoding='utf-8') as data2018:
sale2018 = [[line.strip().split(',')[0], float(line.strip().split(',')[1])] for line in data2018]
set2019 = set([x[0] for x in sale2019])
set2018 = set([x[0] for x in sale2018])
select = input()
if select == '1':
print(sorted(set2019),sorted(set2018),sep='\n')
elif select == '2':
print(sorted(list(set2019&set2018)))
elif select == '3':
print(sorted(list(set2019|set2018)))
elif select == '4':
print(sorted(list(set2019-set2018)))
elif select == '5':
print(sorted(list(set2019^set2018)))
第七关 集合添加元素
# 接下来的N行,每行输入一张邮票来自哪一个国家的名字
N = int(input())# 输入邮票的总数
list1 = []# 输入国家的名称
for i in range(N):
a = input()
list1.append(a)
set1 = set(list1)
print(len(set1))
第八关 列表嵌套字典的排序
n=int(input())# 输入人数的总数
d={}# 定义一个空的字典,用来存放人的数据
ls= []# 定义一个列表来存放数据
a = {}# 用来存放输入的数据
for i in range (n):# 通过循环来输入人的基本信息
a[i]=input().split()
d["name"] = a[i][0]# 姓名
d["age"] = int(a[i][1])# 年龄
ls.append(d.copy()) # 将个人的数据存放进入列表中
def cmp1(a):
return a['age'] #返回字典的年龄
def cmp2(a):
return a['name']# 返回字典的姓名
ls.sort(key = cmp1)# 排序的过程
print(ls)
ls.sort(key = cmp2)
print(ls)
第九关 绩点计算
dic={'A':4.0,'A-':3.7,'B+':3.3,'B':3.0,'B-':2.7,'C+':2.3,'C':2.0,'C-':1.5,'D':1.3,'D-':1.0,'F':0}
num=0
nf=0
while True:
socre=input()
if socre == '-1':
break
f=int(input())
num+=dic.get(socre)*f
nf+=f
print(f'{num/nf:.2f}')
第十关 通讯录(MOD)
def menu():
print('''\n欢迎使用PYTHON学生通讯录
1:添加学生
2:删除学生
3:修改学生信息
4:搜索学生
5:显示全部学生信息
6:退出并保存''')
dic={'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
print(dic)
menu()
N = int(input())
if N == 3:
s = input()
if s in dic:
dic[s] = [input(),input()]
print("Success")
else:
print("No Record")
print(dic)
else:
print("ERROR")
第十一关 字典增加元素
dict1 = {'赵小明': '13299887777', '特明朗': '814666888', '普希京': '522888666', '吴小京': '13999887777'}
a = input()
b = input()
if a not in dict1:
dict1[a] = b
for i in dict1:
print(i+':'+dict1[i])
else:
print('您输入的姓名在通讯录中已存在')
第十二关 字的属性、方法与应用
n = int(input())
name = input().split(',')
telnumber = input().split(',')
dic = dict(zip(name, telnumber))
for i in range(n):
order = input().split()
if order[0] == 'key':
print([x for x in dic])
elif order[0] == 'value':
print([dic[x] for x in dic])
elif order[0] == 'print':
print(dic)
elif order[0] == 'clear':
dic.clear()
elif order[0] == 'add':
dic[order[1]] = order[2]
elif order[0] == 'update':
dic.update({order[1] : order[2]})
elif order[0] == 'del' :
if order[1] in dic:
del dic[order[1]]
else:
print('键不存在')
第十三关 查询省会
capitals = {'湖南': '长沙', '湖北': '武汉', '广东': '广州', '广西': '南宁', '河北': '石家庄', '河南': '郑州', '山东': '济南', '山西': '太原', '江苏': '南京',
'浙江': '杭州', '江西': '南昌', '黑龙江': '哈尔滨', '新疆': '乌鲁木齐', '云南': '昆明', '贵州': '贵阳', '福建': '福州', '吉林': '长春',
'安徽': '合肥', '四川': '成都', '西藏': '拉萨', '宁夏': '银川', '辽宁': '沈阳', '青海': '西宁', '海南': '海口', '甘肃': '兰州', '陕西': '西安',
'内蒙古': '呼和浩特', '台湾': '台北', '北京': '北京', '上海': '上海', '天津': '天津', '重庆': '重庆', '香港': '香港', '澳门': '澳门'}
lis1 = []
lis2 = []
while True:
city = input()
if len(city) == 0:
break
else:
lis1.append(city)
for i in lis1:
if i in capitals:
lis2.append(capitals[i])
else:
print('输入错误')
for j in lis2:
print(j)
第十四关 英汉词典
import string
def read_to_dic(filename):
"""读文件每行根据空格切分一次,作为字典的键和值添加到字典中。
返回一个字典类型。
"""
my_dic = {}
with open('/data/bigfiles/dicts.txt', 'r', encoding='utf-8') as f:
date = f.readlines()
for x in date:
x = x.replace('生存,','生存 ') #之前打开数据集有点问题,在这里用代码修改了一下数据集
x = x.strip().split(maxsplit=1)
my_dic.update({x[0]: x[1]})
return my_dic
def sentence_to_lst(sentence):
"""将句子里的's 用 is 替换,n't 用 not 替换。
所有符号替换为空格,再根据空格切分为列表。
返回列表。
"""
sentence = sentence.replace("n't", ' not')
sentence = sentence.replace("'s", ' is')
for x in string.punctuation:
sentence = sentence.replace(x, ' ')
sentence_lst = sentence.split()
return sentence_lst
def query_words(sentence_lst, my_dic):
"""接收列表和字典为参数,对列表中的单词进行遍历,
将单词字母转小写,到字典中查询单词的中文意义并输出。
若单词在字典中不存在,输出'自己猜'。
"""
for word in sentence_lst:
word = word.lower()
print(word, my_dic.get(word, '自己猜'))
if __name__ == '__main__':
my_str = input()
file = 'dicts.txt'
dic = read_to_dic(file)
lst = sentence_to_lst(my_str)
query_words(lst, dic)
第十五关 通讯录(添加)
print({'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']})
print()
dict = {'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
# 学生通讯录管理系统主界面
def showMenu():
print("欢迎使用PYTHON学生通讯录")
print("1:添加学生")
print("2:删除学生")
print("3:修改学生信息")
print("4:搜索学生")
print("5:显示全部学生信息")
print("6:退出并保存")
# 选择输入的功能
def getSelcet():
selectNum = int(input())
return selectNum
# 实现序号1:添加学生信息
def addstuInof():
name = input()
if name in dict:
print('Fail')
print(dict)
else:
stu_num = input()
zuanye = input()
dict[name] = [stu_num,zuanye]
print('Success')
print(dict)
# 实现序号2:删除学生信息
def delstuInof():
name = input()
if len(name) == 0:
print("ERROR")
else:
del dict[name]
print('Success')
print(dict)
# 实现序号3:修改学生信息
def modifystuInfo():
name = input()
if name in dict:
stu_num = input()
zuanye = input()
dict[name] = [stu_num,zuanye]
print('Success')
print(dict)
else:
print('No Record')
print(dict)
# 实现序号4:搜索学生信息
def seckstuIofo():
name = input()
print(dict[name])
# 实现序号5:显示全部学生信息
def showstuInfo():
print(dict)
# 实现序号6 退出显示管理系统
def exitSystem():
pass
# main主函数
def main():
showMenu()
num = getSelcet()
if num == 1:
addstuInof()
elif num == 2:
delstuInof()
elif num == 3:
modifystuInfo()
elif num == 4:
seckstuIofo()
elif num == 5:
showstuInfo()
elif num == 6:
exitSystem()
print("ERROR")
main()