I am a teacher!

导航

习题解析之:模拟生成微软序列号

【问题描述】

微软产品一般都有一个25位的序列号,用来区分每份微软产品。产品序列号由五组被-分隔开,由字母数字混合编制的字符串组成,每组字符串是由五个字符串组成。如: 36XJE-86JVF-MTY62-7Q97Q-6BWJ2

序列号中每个字符是取自于以下24个字母及数字之中的一个: B C E F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9 。采用这24个字符的原因是为了避免混淆相似的字母和数字,如I 和1,O 和0等,避免产生不必要的麻烦。

请编写程序,根据用户输入的个数和随机数种子,随机生成相应个数的序列号并输出。

随机数种子函数语法为:random.seed(n)

本题要求应用random.choice()方法每次获得一个随机字符!!!

输入格式
分两行中依次输入:
第一行输入一个正整数,代表要生成的序列号的个数
第二行输入一个正整数,代表随机数种子

输出格式
分行依次输出指定个数的序列号

示例
输入:

2
10

输出:

3CVX3-BJWXM-6HCYX-QEK9R-CVG4R
TVP7M-WH7P7-RGWKW-4TC3B-KGJP2

【编程思路1】

        微软序列号由25个字符组成。采用循环 for j in range(1,26) 在待选择的字符集 'BCEFGHJKMPQRTVWXY2346789'  中随机选取 25 个字符。每 5 个字符后面加上一个连接符-,这样就得到了微软产品序列号。
        编写的源程序如下:

        image

【编程思路2】

        微软产品的 25 序列号分为 5 组,5 组字符被-分隔开。可以用一个列表 keySn 来保存这 5 组字符串。
        用循环 for i in range(5) 来生成 5 组字符串,每组字符串用循环 for j in range(5) 在待选择的字符集 'BCEFGHJKMPQRTVWXY2346789'  中随机选取 5 个字符。
        编写的源程序如下:

        image

 

posted on 2025-11-25 20:40  aTeacher  阅读(0)  评论(0)    收藏  举报