实战一道2级综合编程模拟题

请编写程序,生成随机密码。具体要求如下:????????????????????????????????????????????????????????????????????????????????????????????????

(1)使用 random 库,采用 0x1010 作为随机数种子。????????????????????????????????????????????????????????????????????????????????????????????????

(2)密码 [email protected]#$%^&* 中的字符组成。????????????????????????????????????????????????????????????????????????????????????????????????

(3)每个密码长度固定为 10 个字符。????????????????????????????????????????????????????????????????????????????????????????????????

(4)程序运行每次产生 10 个密码,每个密码一行。????????????????????????????????????????????????????????????????????????????????????????????????

(5)每次产生的 10 个密码首字符不能一样。????????????????????????????????????????????????????????????????????????????????????????????????

(6)程序运行后产生的密码保存在“随机密码.txt”文件中。????????????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????????????????????????????????????????????????

不写入文件,直接 print 10 个密码即可自动评阅

解析:

通读题目要求,req5是个难点,如何保证产生的10个密码首字符不同?
一个自然的想法是记录并比较
进而对于req4,就不能用for循环固定循环次数,需要用while循环
while循环退出循环的依据是什么?取决于如何记录密码,比如把每次生成的密码记录到一个列表,用len(ls)<10做退出循环的条件
每次生成的密码设为cipher,考虑以及几点
1.如何生成2.如何满足req5.3如何输出
1.如何生成,可以考虑用s[random.randint(0,len(s)-1)]或random.choice(s), s 是字符集
2.如何满足req5,可以记录每个cipher的首字符,并记录在字符串execlude,只有满足的才添加到ls中
3. 输出,每个密码一行,cipher+ ‘\n‘就可以了

具体代码如下:

import random

fo = open(‘D:/bak/skydrive/automation/2级/execise/随机密码.txt‘,‘w‘)
random.seed(0x1010)
s = ‘[email protected]#$%^&*‘
cipher = ‘‘ # store a cipher,store it into ls and then clear it
ls = [] # store all 10 cipher, len(ls) to count the num of cipher
execlude = ‘‘ # store the first char of a cipher,make sure the cipher meet req#5
while len(ls) < 10: # generate 10 cipher, not use for loop as due to req#5, the running time is not predictable
    cipher = ‘‘ # reset cipher each round
    for i in range(10): # 10个字符
        #cipher += random.choice(s) # pickup a random char from s by random.choice and then connect cyper by +
        cipher += s[random.randint(0,len(s)-1)]
    cipher = cipher + ‘\n‘
    if cipher[0] in execlude:
        continue
    else:
        ls.append(cipher)
        execlude += cipher[0]
        #fo.writelines(cipher) # if write line by line,the performance is somewhat poor,let write the ls to file directly
#print(c)
print(‘‘.join(ls))
##for line in ls:
##    fo.write(line)
fo.write(‘‘.join(ls))
#print(execlude)
fo.close()

执行结果:

So2WpkoC7i
armJ86eUG9
B*GcqsYC^B
wQ3bcfcAJy
Xdyg8pQTIS
YO!1YH1AP3
cu[email protected]&
[email protected]$TBfp
TBm#WfYNHr
Ue75y$E9Cv

由此,可见2级综合编程题,需要在较短时间内,能解读问题,综合应用各种基本编程技能,完成题目要求,对初学者还是有一定难度的。

需要仔细审题,吃透题意,提高基本数据处理的熟练度,才能从容过关。

原文地址:https://www.cnblogs.com/jamesxu/p/11079893.html

时间: 2024-10-16 10:13:44

实战一道2级综合编程模拟题的相关文章

POJ 1008 简单模拟题

e.... 虽然这是一道灰常简单的模拟题.但是米做的时候没有读懂第二个日历的计时方法.然后捏.敲完之后华丽的WA了进一个点.坑点就在一年的最后一天你是该输出本年的.e ...但是我好想并没有..看discuss里好想被坑的人还不少.总天数能直接整除260的时候.年数要减1. 不喜欢做模拟.....5555.... 附代码: #include<stdio.h>#include<string.h>#include<iostream>#include<string>

一道模拟题

问题:把英文单词表示的数字转换为阿拉伯数字,要求数字不超过整形范围,数字形如abc,def,hrg. 第一行表示有几组数据,第二行输入英文. 输出:相应的阿拉伯数字. 例如:input: 3 eleven one hundred and two output: 11 102 分析:要注意百万和千要断位,还有要从高位往低位查找,注意分情况讨论. 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 st

又是一道模拟题吧!

题目如下:This cheeseburger you don't need Description Yoda: May the Force be with you. Master Yoda is the oldest member of the Jedi Council. He conducts preparatory classes of little Younglings up to the moment they get a mentor. All Younglings adore mas

【求助】一道考验脑细胞的编程题

要求计算S的面积.注意:仅计算面积,不区分正负,如果围成的图形被x轴分割为上下两部分,那么就求上下两部分面积之和. 输入多项式fx,以字符串表示,格式为:4*x^5-x^2+5*x+12,多项式表达式不包含括号,可能包含空格.数字.字母x.^.*.+.-,保证多项式最高次幂为非负整数,且最高次幂不超过10. 表达式中4*x^5与4x^5等价,如下面的表达式是合法的: x^10-5x^1 -4*x^1 + 5x^0 2.3x^4 - 2.56*x + 1 输入不会出现下列类型的表达式: x(x+5

TOJ1290 Poker Hands 模拟题

寒假期间抽空做的一道模拟题 难度不算大,把每种牌型分开处理,可以合并的步骤考虑合并. 代码比较丑陋,首次尝试Sport Programming的风格,结果搞了个不伦不类(手动笑哭) 1 #include <algorithm> 2 #include <bitset> 3 #include <cctype> 4 #include <complex> 5 #include <cstdio> 6 #include <cstring> 7 #

FZU Problem 2034 Password table (简单模拟题)

这种简单题做了好长时间,我是不是有点逗? 地址:http://acm.fzu.edu.cn/problem.php?pid=2034 不解释了,自己看吧,练手的好题 上个代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <stdio.h> #include <string.h> #include <stdlib.h>

18002 Z-Scan 模拟题

18002 Z-Scan 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: 不限定 Description Z-Scan is a method to scan data in a square matrix(矩阵). Fig.1 shows Z-Scan. Here, the number stands for the scan sequence number of the element. Our question is very sim

OCJP(1Z0-851) 模拟题分析(七)

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有疏漏,还请大家对我的分析提出质疑. QUESTION 201 Given:1. public class TestString3 {2. public static void main(String[] args) {3. // insert code here5. System.out.print

OCJP(1Z0-851) 模拟题分析(三)

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有疏漏,还请大家对我的分析提出质疑. QUESTION 61Given:1. public class TestString1 {2. public static void main(String[] args) { 3. String str = "420";4. str += 42;5.