今天刚进行完Python期末考试,然后分享一下题目。也分享一下代码,供大家学习交流。(最近有些忙,所以质量可能有点差,但是结果应该没错,程序效率可能差点。)
#问题1
n = int(input("请输入一个正整数:")) #输入一个整数
if n == 1: #首先判断是不是1
print('NO') #若等于1,打印NO
else: #其余不等于1,进行别的程序
for i in range(2, n):#这里考虑到2为特殊数字,会导致break,直接输出YES,当大于2的数字就正常进行下面操作
if n % i == 0: #若 一个数字能整除除了1和它本身之外,那么他就是不是素数
print("NO" ) #打印NO
break# 若有余数等于 0的情况下,则停止程序,不是素数
else:
print("YES" )#打印YES
#问题2
b = 0 # b为开始的求和结果,之后的程序进行累加操作
c = 1 # 设置数字,不断加值,方便后面计算
for a in range(1,21): #做循环,从1到20
c *= a #计算1*1 1*2*3 1*2*3*4 方便之后不断累加
b += c #将计算值加到最后的累积结果
print('1!+2!+……+20!= {}'.format(b))#利用格式化输出将其输出
import os #导入库
os.chdir('d:/') #将工作路径转到d盘根目录
with open('test.txt', "w") as f:#打开test.txt,w:以只写的方式打开文本文件,文件若存在则清空文件内容从文件头部开始写,若不存在则根据文件名创建新文件并只写打开
f.write('1!+2!+……+20!= {}'.format(b))#写入字符串
f.close()#关闭文件
for i in range(1,1001): #从1到1000做循环
lb = [] #建立空列表,等待之后放因子
for j in range(1,i):#对1到 i的数字进行遍历
if i%j==0: #首先满足第一个条件 i能够整除j
lb.append(j)#把所有能整除的因子放入列表
if sum(lb)==i:#将列表求和结果若等于i,就说明满足完数的定义
print('完数{}的因子为:{}'.format(i,lb))
#问题4
import random #导入随机数模块
a= []#生成装随机数的列表
for i in range(20): #产生20个随机数
a.append(random.randint(-10000,10000))#向列表中添加随机整数元素
print(a) #生成原始列表
b=a[::2] #采用切片将偶数下标元素提取出来
b.sort(reverse =True) #将列表进行降序排列
a[::2]=b #将b中每一个元素分别对应分配到 坐标0 2 4 6……
print(a) #打印题目要求的列表
#问题5
def xl(n):#定义函数
if n <= 1: #若n小于等于1直接返回1
return n #这里表示xl(0)为0 ,xl(1)为1
return xl(n-1) + xl(n-2) #直接返回利用公式进行递归:即 xl(2) = xl(1)+xl(0)
def dy(n): # 调用函数
lt =[] #创建空列表,装载序列
for i in range(1, n+1):#进行循环
lt.append(xl(i))#向列表中插入递归产生的值
print(lt)
#递推生成
def xll(n):#定义递推函数
a,b=1,1 #定义a =1,b=1
while n>0: #当n 大于0时
a,b =b,a+b #不断进行递推做循环
n -= 1 #进行判断,使得n不断减少1,当n =0停止循环
return a #返回a
def dt(n): #构造序列
lbb =[] #创建序列
for i in range(0,n):
lbb.append(xll(i))#向列表中加入斐波那契数列
print(lbb)#打印列表
#调用
a = int(input("请输入需要斐波那契数列个数(要求正整数):"))
print('递归生成的{}项斐波那契数列'.format(a))
dy(a)
print('递推生成的{}项斐波那契数列'.format(a))
dt(a)