1.字符串去重排序
描述:输入一个非空字符串,去除重复的字符后,从小到大排序输出为一个新字符串。
m=input('')
n=list(set(list(m)))
n=sorted(n,reverse=False)
print(''.join(n))
2.加密字符串
描述:
密码对照表的第一行为明码行,放置大写字母表(如下表第一行所示。)
第二行为按照以下规则生成的密码行:
给定一个单词,将单词中所有字符转为大写字母,对于单词中重复出现的字母,保留第一次出现的,删除之后重复出现的该字符。
用剩余字母组成秘钥从密码行的开始位置放置;再用未在秘钥中出现的其他大写字母按字母表顺序依次填充密码行剩余位置。
例如:给定单词“HelloPython”,删除其中重复出现字母后得到秘钥“HELOPYTN”,将秘钥依次填入密码行最开始的位置,再用未在秘钥中出现的其他大写字母按字母表顺序依次填充密码行的剩余位置,最终得到密码行(如下的第二行所示)
密码对照表
ABCDEFGHIJKLMNOPQRSTUVWXYZ
HELOPYTNABCDFGIJKMQRSUVWXZ
输入一个字符串,将其中所有字母转为大写字母,依照明码密码对照表对其做加密处理,输出加密后的密文字符串。
输入格式
输入有两个:
输入一个字符串做秘钥
输入一个需要加密的符串
输出格式
输出加密后的密文字符串
import string
upperLetter = string.ascii_uppercase
s = input().upper()
code = list(set(upperLetter) - set(s))
code.sort()
ls = list(set(s))
ls.sort(key = s.index)
keys = ''.join(ls + code)
decode = input().upper()
table = ''.maketrans(upperLetter, keys)
print(decode.translate(table))
3.数据统计
描述:
输入两个整数,在这两个整数组成的闭区间范围内生成100个随机整数,并统计出现数据的次数。为满足评测需要,程序必须使用seed函数将随机种子设为10,并使用randint函数生成随机数。
输入格式
一行当中输入两个整数,以空格间隔。题目保证两个整数从小到大
输出格式
按照生成随机数从小到大的顺序,每行输出一个生成的整数以及其出现的次数,以空格间隔。
import random
a, b = eval(input().replace(' ', ','))
random.seed(10)
dic = {}
for each in range(100):
num = random.randint(a, b)
dic[num] = dic.get(num, 0) + 1
for key, value in sorted(dic.items(), key=lambda d:d[0]):
print(key, value)
4.列表去重
描述:
输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。
list1 = list(input().split(","))
list2 = []
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
5.通讯录(删除)
描述:
模拟通讯录的数据删除功能。
通讯录中信息包括:姓名,电话,所在学院。
字典的初始化信息及用户界面函数:(直接复制到程序中)
def menu():
print('''\n欢迎使用PYTHON学生通讯录
1:添加学生
2:删除学生
3:修改学生信息
4:搜索学生
5:显示全部学生信息
6:退出并保存''')
dic={'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
要求编写程序
输出字典原始数据,再调用menu函数输出用户选择界面,等待用户输入:
(1)输入‘2’ 进行删除学生,输入姓名,如果该姓名已存在,则删除该学生的信息,并输出“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==2:
a=input()
if a in dic:
del dic[a]
print('Success')
else:
print('No Record')
print(dic)
else:
print('ERROR')
6.唯一字符
描述:
给定一个字符串,找到它的第一个不重复的字符,输出它的索引。如果不存在这种字符或空串,则返回 -1。
本题字符串中只包含小写字母。
from collections import Counter
def firstUniqChar(s):
c_counter = Counter(s)
for c in s:
if c_counter[c] <= 1:
return s.index(c)
else:
return -1
print(firstUniqChar(input()))
7.删除列表中重复元素
用户输入两个正整数 m 和 n ,其中m做为随机数种子。随机产生 n 个0-9之间的整数,以字符形式加入列表。先输出列表,再输出去除重复元素后按升序排序的列表。
import random
m=int(input())
n=int(input())
nums=[]
random.seed(m)
for i in range(0,n):
nums.append(random.randint(0, 9))
nums=[str(i) for i in nums]
print(nums)
print(sorted(set(nums)))
8.字典增加元素
现有字典:dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'}
尝试向其中加入一个键值对,键和值在两行里输入,如果输入的键在字典中已经存在,则输出“您输入的姓名在通讯录中已存在”,如输入的键在字典中不存在则把键和值加入到字典中。操作完成后输出字典中所有键值对。
dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'}
key1=input()
value1=input()
if key1 in dict1.keys():
print("您输入的姓名在通讯录中已存在")
else:
dict1[key1]=value1
for i,j in dict1.items():
print(i+':'+j)
9.字典更新
现有字典:dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'}
尝试修改一个键值对,姓名和电话在两行里输入,如果输入的键在字典中存在,则用新输入的电话号码替换原来的号码,如输入的键在字典中不存在则输出“数据不存在”。操作完成后输出字典中所有键值对。
dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'}
key1=input()
value1=input()
if key1 not in dict1.keys():
print("数据不存在")
else:
dict1[key1]=value1
for i,j in dict1.items():
print(i+':'+j)