A31693. 字母去重排序在一列表中产生n个大写字母,删除其中重复字母,并按照A到Z顺序排列输出。同时输出删除字母个数。例如输入 5 随机产生原始字母:[ "D","H","K","E","H"] 输出:去重后字母排序:["D","E","H","K"] 输出:共删除字母个数:1个。请编写程序实现上述功能,或补全代码。import random#导入随机数模块maxn=int(input("输入生成大写字母个…
题目描述
字母去重排序
在一列表中产生n个大写字母,删除其中重复字母,并按照A到Z顺序排列输出。同时输出删除字母个数。
例如输入 5 随机产生原始字母:[ "D","H","K","E","H"] 输出:去重后字母排序:["D","E","H","K"] 输出:共删除字母个数:1个。
请编写程序实现上述功能,或补全代码。
import random
#导入随机数模块
maxn=int(input("输入生成大写字母个数"))
a=[ ]
for i in range(maxn):
c=random.randint(1,26)#随机产生1-26之间的整数
numb=chr(64+c)
①
print("随机产生原始字母:",a)
m,n=0,maxn
while m<n:
i=n-1
while ② :
i=i-1
if i==m:
③
else:
a.remove(a[i])
n=n-1
for i in range(n):
for j in range(len(a)-1,i,-1):
if a[j]<a[j-1]:
④
print("去重后字母排序:",a)
print("共删除字母个数:", ⑤ ,"个")
参考答案
import random
maxn=int(input("输入生成大写字母个数"))
a=[ ]
for i in range(maxn):
c=random.randint(1,26)
numb=chr(64+c)
a.append(numb)
print("随机产生原始字母:",a)
m,n=0,maxn
while m<n:
i=n-1
while a[i]!=a[m]:
i=i-1
if i==m:
m=m+1
else:
a.remove(a[i])
n=n-1
for i in range(n):
for j in range(len(a)-1,i,-1):
if a[j]<a[j-1]:
a[j],a[j-1]=a[j-1],a[j]
print("去重后字母排序:",a)
print("共删除字母个数:",maxn-n,"个")答案解析
试题解析
(1)a.append(numb) 或等效答案;(3分)
(2)a[i]!=a[m] 或等效答案;(4分)
(3)m=m+1 或等效答案;(3分)
(4)a[j],a[j-1]=a[j-1],a[j] 或等效答案;(3分)
(5)maxn-n 或等效答案。(3分)