赞
踩
第1关:字符串去重排序
- ls = list(set(input())) # 字符串转集合去重,再转为列表
- ls.sort() # 列表排序
- print(''.join(ls)) # 列表中的字符串元素连接为一个字符串
-
第2关:列表去重
输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。
- name_list = input().split(',') # 将输入的人名分割成列表
- result = []
- for name in name_list:
- if name not in result:
- result.append(name) # 如果名字不在结果列表中,则加入
- print(result)
第3关:猜年龄
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请编程输出当年维纳的年龄。
- 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

第4关:集合的属性、方法与运算
将用户输入用空格分隔的一系列地名创建集合MySet,输入一个正整数 n,你将被要求读入 n 个输入(输入形式如下所示),每得到一个输入后,根据输入进行操作。
- 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()

第5关:集合介绍
李白是一个社区大学的老师,一天,他让学生小明计算一下温室里植物的平均高度。
平均高度 = 不同高度的和 / 不同高度的数量
- 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)
第6关:手机销售统计
sale2018.csv
sale2019.csv 文件中包含有2018和2019手机销售榜单数据(市场份额百分数),请根据要求升序输出分析结果:
1.输入'1'时,以列表形式在两行中分别输出2019年和2018年上榜品牌
2.输入'2'时,以列表形式输出2019年和2018年都上榜的品牌
3.输入'3'时,以列表形式输出2019年和2018年上榜的所有品牌
4.输入'4'时,以列表形式输出2019年新上榜品牌
5.输入'5'时,以列表形式输出2019年新上榜和落榜品牌
- 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)))

第7关:集合添加元素
应用你的知识帮助你的好朋友小明,小明喜欢集邮,他有大量的来自不同国家的邮票,他决定数一下他的集邮册中共有来自多少个不同国家的邮票,他请你帮忙,你一个一个的把N张邮票拿出来,找出共有多少个不重复的国家。
- # 接下来的N行,每行输入一张邮票来自哪一个国家的名字
- N = int(input())# 输入邮票的总数
- list1 = []# 输入国家的名称
- for i in range(N):
- a = input()
- list1.append(a)
- set1 = set(list1)
- print(len(set1))
第8关:列表嵌套字典的排序
第一行输入一个正整数 N,随后的N 行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18” ),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其排序输出。
- 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)

第9关:绩点计算
平均绩点计算方法:
(课程学分1*绩点+课程学分2*绩点+......+课程学分n*绩点)/(课程学分1+课程学分2+......+课程学分n)
用户循环输入五分制成绩和课程学分,题目测试数据保证至少有一组或以上合法数据输入。输入‘-1’时结束输入,计算学生平均绩点。等级与绩点对应关系如下表:
- 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}')
第10关:通讯录(MOD)
要求编写程序 输出字典原始数据,再调用menu函数输出用户选择界面 (1)输入‘3’ 进行修改学生信息,输入姓名,如果该姓名已存在,则继续输入电话,学院信息,并输出“Success”的提示信息,如果不存在,给出“No Record”提示信息。 无论是否修改成功,结束后需要输出操作后的字典数据。 (2)如果输入其他选项,无需读入姓名,直接输出“ERROR”。
- 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")

第11关:字典增加元素
现有字典:
dict1 = {'赵小明': '13299887777', '特明朗': '814666888', '普希京': '522888666', '吴小京': '13999887777'}
尝试向其中加入一个键值对,键和值在两行里输入,如果输入的键在字典中已经存在,则输出“您输入的姓名在通讯录中已存在”,如输入的键在字典中不存在则把键和值加入到字典中。操作完成后输出字典中所有键值对。
- 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('您输入的姓名在通讯录中已存在')
第12关:字典的属性、方法与应用
将用户输入用逗号分隔的一系列人名做为键,用户输入的逗号分隔的手机号做为值,创建字典MyDict,输入一个正整数 n,你将被要求读入 n 个输入(输入形式如下所示),每得到一个输入后,根据输入进行操作。
- 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('键不存在')

第13关:查询省会
有诗云:
两湖两广两河山,五江云贵福吉安,四西二宁青甘陕,还有内台北上天。 中国各省、直辖市、自治区和特别行政区的字典数据如下:
capitals = {'湖南':'长沙','湖北':'武汉','广东':'广州','广西':'南宁','河北':'石家庄','河南':'郑州','山东':'济南','山西':'太原','江苏':'南京','浙江':'杭州','江西':'南昌','黑龙江':'哈尔滨','新疆':'乌鲁木齐','云南':'昆明','贵州':'贵阳','福建':'福州','吉林':'长春','安徽':'合肥','四川':'成都','西藏':'拉萨','宁夏':'银川','辽宁':'沈阳','青海':'西宁','海南':'海口','甘肃':'兰州','陕西':'西安','内蒙古':'呼和浩特','台湾':'台北','北京':'北京','上海':'上海','天津':'天津','重庆':'重庆','香港':'香港','澳门':'澳门'}`
设计程序,接收用户输入的省、直辖市、自治区和特别行政区名称,输出对应的省会名称,当输入错误时输出“输入错误”。程序可以重复接收用户输入,直接输入回车时退出程序。
- 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)

第14关:英汉词典
你从武汉搬到美国生活,这里的人都讲英语,你的英语不好,好在你有一个程序,可以把英语译成中文,帮助你与人沟通。 本关所用文件及路径:'step15/dicts.txt' 下述文件仅用于本地查看文件格式,数据与本关文件不完全相同: dicts.txt
(注意:词典文件没有精校,存在部分格式不一致的问题,处理时根据空格切分一次,只把英文和中文解释切分开。)
- 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)

第15关:通讯录(添加)
模拟通讯录的数据添加功能。
def menu():
print('''\n欢迎使用PYTHON学生通讯录
1:添加学生
2:删除学生
3:修改学生信息
4:搜索学生
5:显示全部学生信息
6:退出并保存''')
dic={'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
要求编写程序 首先输出字典原始数据,再调用menu函数输出用户选择界面,接下来读用户输入: (1) 输入‘1’ 进行添加学生,输入姓名,如果该姓名已存在,则输出“Fail”的提示信息,如果不存在,继续输入电话和所在学院。添加完毕后输出“Success”提示信息。 无论是否添加成功,结束后需要输出操作后的字典数据。 (2) 如果输入其他选项,无需再读姓名,直接输出“ERROR”。
- 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()

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。