分享几道Python基础题目

  今天刚进行完Python期末考试,然后分享一下题目。也分享一下代码,供大家学习交流。(最近有些忙,所以质量可能有点差,但是结果应该没错,程序效率可能差点。)

问题1:编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。并写程序调用该函数。
#问题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:编写程序,求1!+2!+……+20!。并将结果输出到D盘根目录下文本文件test.txt中,输出格式为:1!+2!+……+20!= 结果
#问题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()#关闭文件

问题 3:求出1000以内的所有完数(一个数恰好等于它的因子之和,这个数就称为“完数”),并按示例格式输出其因子。(7分)输出格式示例: 完数6的因子为:[ 1,2,3],完数……
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: 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)
#问题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:编写2个函数,分别采用递归和递推(循环)方法计算斐波那契数列的前n项,函数返回列表,该列表中存放快斐波那契数列。并写出程序调用这2个函数,输出斐波那契数列。
#问题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)

你可能感兴趣的:(python)