补充编程模板中代码,完成如下功能:
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用random.randint()函数。。
输出仅表示格式,不表示对错。
输入 | 输出 |
---|---|
3 | 634 |
524 | |
926 |
这道题目一开始以为每个密码的每一位都要单独生成一个数字,结果调试了半天,都是0%。后来看了答案才知道,它其实是要求生成一个N位数的整数就是正确答案了…猝不及防。下面先上正确答案
import random
def genpwd(length):
a = pow(10, length - 1) # 定义一个下限
b = pow(10, length) - 1 # 定义一个上限
return "{}".format(random.randint(a, b))
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
# 这是自己一开始的错误答案(语文的理解博大精深T_T)
import random
def genpwd(length):
ls = []
for i in range(length):
ls.append(str(random.randint(0, 9)))
s = ''.join(ls)
return s
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
补充编程模板中代码,完成如下功能:
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
注意:用户输入的数字N可能是浮点数,都是正数;最后一个输出后不用逗号
输入 | 输出 |
---|---|
12 | 13,17,19,23,29 |
def prime(m):
count = 0
ls = []
num = m
while count < 5:
end = int(pow(num, 0.5)) + 1 # 缩小遍历的范围,提升速度
for i in range(2, end):
if num%i == 0:
break
else:
count += 1
ls.append(num)
num += 1
return ls
n = eval(input())
if n != int(n): # 因为可能输入有浮点数
n = int(n) + 1
else: # 保证输入5.0时,输出为整数5。这里只根据题目中只输入正浮点或者正整数时做的处理
n = int(n)
# 上面的if...else可以用一行代码搞定
# n = (int(n) + 1) if (n > int(n)) else int(n)
ls = prime(n)
length = len(ls)
for i in range(length):
if i < (length-1):
print(ls[i], end=',')
else:
print(ls[i])
# 看了答案后优化的版本
def prime(m):
end = int(pow(m, 0.5) + 1)
for i in range(2, end):
if m%i == 0:
return False
else:
return True
n = eval(input())
if n != int(n): # 因为可能输入有浮点数
n = int(n) + 1
else: # 保证输入5.0时,输出为整数5。这里只根据题目中只输入正浮点或者正整数时做的处理
n = int(n)
count = 5
while count > 0:
if prime(n):
if count > 1:
print(n, end=',')
else:
print(n)
count -= 1
n += 1