测验题一般不会太难,但是这次的题目,未免太多了,有的还很难
一、选择题
二、编程题
1-10 列表和字符串
1-10都是和列表、字符串有关的题目,都很简单,我直接给出代码了
1.列表排序输出
import random
random.seed(int(input()))
lis = [random.randint(1,100) for _ in range(10)]
lis1=[]
while len(lis) > 0:
m = min(lis)
lis.remove(m)
lis1.append(m)
print(lis1)
2.列表排序
s=input()
lis=[]
for i in range(len(s)):
lis.append(s[i])
lis.sort()
print(lis)
3.列表插入
ls = ['2', '3', '0', '1', '5']
s=input()
i=eval(input())
ls.insert(i,s)
ls.append(s)
print(ls)
4.列表删除
s='我有一所房子面朝大海春暖花开'
ls=[]
for i in s:
ls.append(i)
m,n=input().split(",")
m=int(m)
n=int(n)
del ls[m:n]
print(ls)
5.列表的基本操作
a = list(input())
b = list(input())
print(a + b)
print(a * 3)
print(b[2],b[-1],sep = ' ')
print(a[1:4])
print(len(a),len(b),sep = ',')
print(min(a),max(b))
6.列表的合并与排序
list1 = list(map(int,input().split()))
list2 = list(map(int,input().split()))
lis=list1+list2
lis.sort(reverse=True)
print(lis)
7.列表元素的查找和添加
aList = input().split()
if 'and' in aList:
ind = aList.index('and')
aList.insert(ind,'Anna')
print(' '.join(aList))
8.字符串的去重操作
这题有些意思,贴出了题目
s=input()
new_s=""
for i in s:
if i not in new_s:
new_s+=i
lis=list(new_s)
lis.sort(key=new_s.index) #字符串s的顺序
lis.sort()
print(''.join(lis))
9.列表去重
name_lst = input().split(',') # 输入的字符串节分为列表
name_no_duplicate = list(set(name_lst)) # 去除重复的元素
print(sorted(name_no_duplicate, key=name_lst.index))
10.删除列表中的重复元素
import random
# 输入m和n
m=int(input())
n=int(input())
# 以m作为随机数种子
random.seed(m)
# 随机生成n个0-9的整数
nums = [str(random.randint(0, 9)) for i in range(n)]
# 输出原始列表
print(nums)
# 去重排序
result = sorted(list(set(nums)))
# 输出去重排序后的列表
print(result)
11.集合添加元素
N=int(input())
result=set()
for i in range(N):
result.add(input())
print(len(result))
这题。。也很简单,没必要贴的题目
12.列表嵌套字典的排序
这题就有点意思了
我的代码:
n = int(input())
ls = []
for i in range(n):
a, b = input().split()
dicts = {"name": a, "age": int(b)}
ls.append(dicts)
list_age = sorted(ls, key=lambda x: x['age'])
list_name = sorted(ls, key=lambda x: x['name'])
print(list_age)
print(list_name)
参考代码:
n = int(input())
ls = []
for i in range(n):
x = input().split()
ls.append({"name":x[0],"age":int(x[1])})
print(sorted(ls,key=lambda x: x['age']))
print(sorted(ls,key=lambda x: x['name']))
思路都相同,这个更精简
13.字典查询
这个也很简单
# 字典数据
phone_book = {
"赵广辉": "13299887777",
"特朗普": "814666888",
"普京": "522888666",
"吴京": "13999887777"
}
def search_phone(name):
# 查询电话号码
phone_number = phone_book.get(name)
if phone_number:
print(f"{name}:{phone_number}")
else:
print("数据不存在")
# 用户输入姓名
input_name = input()
search_phone(input_name)
14.字典增加元素
也很简单,和1-10一样还是连续题目(乐)
dict1 = {'赵小明': '13299887777', '特明朗': '814666888', '普希京': '522888666', '吴小京': '13999887777'}
def search_phone(name):
# 查询电话号码
phone_number = dict1.get(name)
if phone_number:
print("您输入的姓名在通讯录中已存在")
else:
dict1[name]=ph
for name in list(dict1.keys()):
print(name+':'+dict1[name])
# 用户输入姓名
name = input()
ph=input()
search_phone(name)
15.字典更新
又是连续
dict1={'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'}
updateName = input()
newvalue = input()
if (updateName in dict1):
dict1[updateName] = newvalue
else:
print('数据不存在')
for key in dict1:
print(key + ':' + dict1.get(key))
16.双一流高校及所在省份统计
很无趣的题目
d = {"北京大学":"北京", "中国人民大学":"北京","清华大学":"北京",\
"北京航空航天大学":"北京","北京理工大学":"北京","中国农业大学":"北京",\
"北京师范大学":"北京","中央民族大学":"北京","南开大学":"天津",\
"天津大学":"天津","大连理工大学":"辽宁","吉林大学":"吉林",\
"哈尔滨工业大学":"黑龙江","复旦大学":"上海", "同济大学":"上海",\
"上海交通大学":"上海","华东师范大学":"上海", "南京大学":"江苏",\
"东南大学":"江苏","浙江大学":"浙江","中国科学技术大学":"安徽",\
"厦门大学":"福建","山东大学":"山东", "中国海洋大学":"山东",\
"武汉大学":"湖北","华中科技大学":"湖北", "中南大学":"湖南",\
"中山大学":"广东","华南理工大学":"广东", "四川大学":"四川",\
"电子科技大学":"四川","重庆大学":"重庆","西安交通大学":"陕西",\
"西北工业大学":"陕西","兰州大学":"甘肃", "国防科技大学":"湖南",\
"东北大学":"辽宁","郑州大学":"河南", "湖南大学":"湖南", "云南大学":"云南", \
"西北农林科技大学":"陕西", "新疆大学":"新疆"}
ls = list(d.values())
dc = {}
for word in ls:
dc[word] = dc.get(word, 0) + 1
for k in dc:
print("{}:{}".format(k, dc[k]))
17.用字典来统计词频
无需多盐,味大
dict1 = eval(input())
for word in input().split():
dict1[word] = dict1.get(word,0) + 1
print(dict1)
18.多用户登录(列表)
user_lst = ["aaa", "bbb", "ccc"] # 用户名列表
pass_lst = ["123456", "888888", "333333"] # 密码列表,用户与对应密码的序号相同
user = input() # 输入用户名
password = input() # 输入密码
if user in user_lst: # 若用户名在用户列表中存在时,判断输入的密码是否存在和序号是否与用户序号相同
if password in pass_lst and pass_lst.index(password) == user_lst.index(user):
print("Success")
else:
print("Fail")
else: # 若用户名在用户列表中不存在
print("Wrong User")
19.约瑟夫环问题
太激动了当时看到这个题目,因为非常经典,用C语言写过,写了很长的代码,转化成python不过12行
def Josephus(n,k):
ls_n = list(range(1,n+1))
while len(ls_n) > k-1:
ls_n = ls_n[k:] + ls_n[:k-1]
return ls_n
n,k = map(int,input().split())
if k >= 2 and n >= k:
print(Josephus(n,k))
else:
print('Data Error!')
20.扑克牌游戏
很长的题目,但是捋清逻辑就很简单
import random
def start():
"""初始顺序,返回元素为字符串的列表"""
cards_start = [i + j for i in desigh for j in num] + ghost
return cards_start
def shuffle_cards(cards_start):
"""打乱顺序,返回元素为字符串的列表"""
random.shuffle(cards_start)
return cards_start
def traver(cards_shuffle, m):
"""发牌给m个人,返回二维列表"""
person = []
for i in range(m):
person.append(cards_shuffle[i::m])
return person
def sort_cards(person, m):
"""对m个人手上的牌进行升序排序,花色按黑红梅方,牌面按点数,大王最大,小王第二大"""
person_sort = []
for i in range(m):
if ('jokers' in person[i]) and ('JOKERS' in person[i]):
person[i].remove('jokers')
person[i].remove('JOKERS')
person_sort.append(sorted(person[i], key=lambda x: (desigh.index(x[0]), num.index(x[1:])))+['jokers', 'JOKERS'])
elif 'jokers' in person[i]:
person[i].remove('jokers')
person_sort.append(sorted(person[i], key=lambda x: (desigh.index(x[0]), num.index(x[1:])))+['jokers'])
elif 'JOKERS' in person[i]:
person[i].remove('JOKERS')
person_sort.append(sorted(person[i], key=lambda x: (desigh.index(x[0]), num.index(x[1:])))+['JOKERS'])
else:
person_sort.append(sorted(person[i], key=lambda x: (desigh.index(x[0]), num.index(x[1:]))))
return person_sort
if __name__ == '__main__':
desigh = ['♠', '♥', '♣', '♦'] # 表示黑桃、红桃、梅花、方块
num = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
ghost = ['jokers', 'JOKERS']
n = int(input()) # 输入参与游戏的人数
s = int(input())
random.seed(s)
print(f'参与游戏的人数:{n}')
cards = start()
print('新牌顺序')
print(*cards)
cards_after = shuffle_cards(cards)
print('洗牌顺序')
print(*cards_after)
cards_n = traver(cards_after, n)
print('每个人手上分到的牌')
for i in range(n):
print(*cards_n[i])
cards_sort = sort_cards(cards_n, n)
print('每个人手上排序的牌')
for i in range(n):
print(*cards_sort[i])
结束了~
我的gitcode中有我自学python整理的笔记,可以看看
https://gitee.com/li_fjyr/disposal_python