测验5: 函数和代码复用 (第5周):随机密码生成&连续质数计算

这次的题目对我来讲有点小难,想了蛮久,改了很多回才通过测试。也看过其他博主的代码,1000个读者就有1000个哈姆雷特。对我来讲我自己的代码比较好理解,毕竟是我自己的思路哈哈哈。伙伴们参考一下就好,最重要的是自己理清思路,写出自己的代码。一起加油!冲鸭!

随机密码生成

题目描述:
补充编程模板中代码,完成如下功能:
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬产生密码采用random.randint()函数。

一开始测试报错原因:
题目理解成:每位单独生成0-9的数拼在一起
贴上错误答案的代码:

import random
def genpwd(length):
    if length==1:
        y=random.randint(0,9)
        return y
    else:
        a=pow(10,length-1)
        s=a*(random.randint(0,9))+genpwd(length-1)
        return s
length = eval(input("你想要几位数密码?"))
random.seed(17)
for i in range(3):
    print(genpwd(length))

#题目真实意思:假设N=3,需要生成一个随机三位数
#运行之后答案正确

import random
def genpwd(length):
    a=pow(10,length-1)#上限
    b=pow(10,length)-1#下限
    return random.randint(a,b)
length = eval(input(""))
if length<=0:
    print("输入有误")
else:
    random.seed(17)
    for i in range(3):
        print(genpwd(length))

连续质数计算

描述
补充编程模板中代码,完成如下功能:
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬获得用户输入数字N,计算并输出从N开始的5个质数,
单行输出,质数间用逗号,分割。
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;
最后一个输出后不用逗号。

#质数就是素数,除了1和它本身,不被其他数整除
代码如下(python123运行正确):

count=0
ls=[]
def prime(m):#从m=2开始计算素数
    global count
    if m==0:
        m=m+2
        prime(m)
    if m==1:
        m=m+1
        prime(m)
    else:
        for m in range(m,m+1):
            for j in range(2,m):
                if m%j==0:
                    break
            else:
                ls.append(m)#列表ls接收素数
            
        while len(ls)<5:#找到m之后的5个素数
            prime(m+1)
    return ls#返回带有5个素数的列表ls
n = eval(input())
#判断n是否是int类型,假如输入2.2,n就从3开始
if n!=int(n):
    n=int(n)+1
else:
    n=int(n)
#解决“,”问题
ls=prime(n)#此处ls是一个带有从n开始5个素数的列表
#一开始尝试直接返回ls,结果带有[]
#开始解决如何去掉[]
for i in ls[0:4]:
    print(i,end=",")#打印列表0-3的4个素数,以“,”分隔
print(ls[4])#打印第5个素数

你可能感兴趣的:(Python基础)