A39905. 若要生成一个由若干小写字母组成的互不重复的随机数组,已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。import random #random是随机数模块n=int(input("请输入元素个数(不超过26):"))a=[] #产生不重复的随机数组for i in range(n): x=random.randint(97,122) #…
题目描述
若要生成一个由若干小写字母组成的互不重复的随机数组,已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。
import random #random是随机数模块
n=int(input("请输入元素个数(不超过26):"))
a=[]
#产生不重复的随机数组
for i in range(n):
x=random.randint(97,122) #产生97-122之间的随机整数
while chr(x) in a:
x=random.randint(97,122)
a.append( ① )
print(a)
#将各个元素进行排序输出
for i in range(n-1):
k=i
for j in range( ② ,n):
if a[k]>a[j]:
k= ③
if i!=k:
a[i],a[k]= ④
print("该随机数组从小到大排列为:",a)
参考答案
import random #random是随机数模块
n=int(input("请输入元素个数(不超过26):"))
a=[]
#产生不重复的随机数组
for i in range(n):
x=random.randint(97,122) #产生97-122之间的随机整数
while chr(x) in a:
x=random.randint(97,122)
a.append(chr(x))
print(a)
#将各个元素进行排序输出
for i in range(n-1):
k=i
for j in range(i+1,n):
if a[k]>a[j]:
k=j
if i!=k:
a[i],a[k]=a[k],a[i]
print("该随机数组从小到大排列为:",a)答案解析
评分标准:
(1)chr(x);(4分)
(2)i+1;(4分)
(3)j;(4分)
(4)a[k],a[i]。(4分)
本题主要考查选择排序。程序的第一部分是产生不重复的字母组成的数组。由于x是97~122中的随机整数,故追加到a列表中的元素应在x的基础上将其转化为字符,故①空填写chr(x);在选择排序中,外循环控制排序趟数,内循环控制排序次数,不难看出,i的取值范围为0~n-2,因此j每次从i的下一个位置开始至最后,故②处填写i+1;根据选择排序的原理,在j位置上找到比k位置更小的元素,则k移至该位置,故③处填写为j;在某趟排序过程中,当全部元素比较结束,应在最小元素位置上,需要将其交换到相应的i位置上,故④位置答案应为a[k],a[i]。