Python#394
在下面的代码中,函数isPrime()用来判断参数k是否为素数,是则返回True,否则返回False。
函数main()接收一个元组numbers作为参数,其中包含若干介于[0,9]区间的数字,要求返回这些数字能够组成的所有素数升序排列的列表,每个素数中都必须使用number中的数字,且每个数字在每个素数中只能使用一次。
例如,main((1,2,3,4))返回[1423,2143,2341,4231]。
替换下面的pass语句,完成要求的功能。
考点:选择结构与循环结构,排列
from itertools import permutations
def isPrime(k):
if k in (2,3):
return True
if k%2 == 0:
return False
for i in range(3, int(k**0.5)+2,2): #???
if k%i ==0:
return False
return True
def main(numbers):
pass
prime是素数的意思,k是isPrime()的一个参数,为啥有这个参数?但是这里为什么 "如果k在2到3里面,就返回True"?,如果模2等于0,那就是偶数,这里可以理解,i在(3,int(k**0.5)+2,2)范围循环,**0.5就是开方,但是为啥开方然后转整数又+2?元组转整数?还在3到2的中间?如果k模其中某个数为0,那就是偶数,返回False(咋不是模2了?)。
numbers参数是一个元组,然后结果返回的素数就是升序排列的,那应该就是用到permutations()排列函数了,重点在排列,题目要求返回列表,那就得return(list(permutations()))。
return numbers #返回主函数的参数
'''
答题错误!您的代码执行结果为:
(1, 2, 3, 4)
(3, 5, 7, 8)
(1, 3, 5, 7)
'''
那也就是说,用这个数字,先组合出可能的数字,然后判断是否为素数,符合条件就返回。
def main(numbers):
if isPrime=='True':
combinations(k)
permutations(k)
return list(k)
'''
代码不符合题目要求,提交失败。
要求不能使用list函数。
'''
好吧,是不能使用list()函数的……