第一题 随机密码生成
描述
补充编程模板中代码,完成如下功能:
以整数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):
if m < 2:
return False
else:
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
说明:题目来自北理嵩天老师【Python语言程序设计 (第8期)】课程,如有侵权,立删。
后记:
我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技
,扫描下方二维码或者搜索每日学一技
关注。
这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!