1、随机密码生成
补充编程模板中代码,完成如下功能:
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用random.randint()函数。
import random
def genpwd(length):
return random.randint(pow(10,length-1),pow(10,length)-1)
#randint(a,b)产生[a,b]之间的整数
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
2、连续质数计算
补充编程模板中代码,完成如下功能:
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。
def prime(m):
for i in range(2,m):
if m % i == 0:
return False
return True
#定义“是质数”的函数返回结果是True or False,这种函数往往被if调用
n = eval(input())
n_ = int(n) #int函数截取浮点数的整数部分,返回截取后的整数
n_ = n_+1 if n_ < n else n_
count = 5
while count > 0:
if prime(n_):
if count > 1:
print(n_, end=",")
else:
print(n_, end="")
count -= 1
n_ += 1
还给出另一种写法
def prime(m):
global count
for i in range(2,m):
if m%i ==0:
break #如果整个循环下来,没有被break退出,就会去执行else语句
else:
count += 1
return m
#该函数能返回是质数的数,不是质数返回值为None
def main(N):
s = ""
M = N+1
'''这里M要先定义,否则会报错
UnboundLocalError: local variable 'M' referenced before assignment
该错误有两种情况 详见贴的链接'''
while M > N:
if count == 5: #当找到了五个数就不找了
break
if prime(M) == M: #返回值是本身时M是质数
s += str(M)+','
M += 1
print(s[:-1])
import math
count = 0
n = math.floor(eval(input())) #math库里面向下取整的函数
main(n)
如果方法二中M不定义,会报错UnboundLocalError: local variable 'M' referenced before assignment,这种方法详见这个链接Python 引用全局变量提示:local variable referenced before assignment. 问题解决办法,global使用方法介绍_挣扎的蓝藻的博客-CSDN博客
分析一下两种方法的不同的地方:
1、判断质数的函数不同
2、count一个是减到0,一个是加到5,当然本质一样
3、取整做法不一样。方法一用的int()功能是截取浮点数的整数部分,返回截取后的整数;方法二调用了向下取整的函数math.floor()。这两个函数在正数范围内功能是一样的。
int函数的用法:
Python 中 int 用法详解_团子大圆帅的博客-CSDN博客_python中int的用法
取整函数:
Python取整——向上取整、向下取整、四舍五入取整、向0取整__illusion_的博客-CSDN博客_python 取整(注意:这个round()记得看评论)
4、最后一个数不跟“,”的处理方法不一样,程序中刚好涉及count计数,所以方法一很容易通过if判断决定跟不跟“,”。方法二选的常用方法。还有方法见
第四章 程序的控制结构_siciful的博客-CSDN博客中的4、三位水仙花数。
3、任意累积
请根据编程模板补充代码,计算任意个输入数字的乘积。
注意,仅需要在标注...的地方补充一行或多行代码。
def cmul(*b): #*b是可变参数的表示,这里表示的是输入的组合数据类型
s = 1
for item in b:
s *= item
return s
#本来应该是直接print(cmul()),因为参数是输入的不确定的,没办法写在框里,所以
#print(cmul(input()))
print(eval("cmul({})".format(input())))
#个人理解:cmul()本来是一个字符串,然后用了eval之后他就是函数公式了,不知道对不对