栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python期末练习题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python期末练习题

公鸡一只5元,母鸡一只3元,小鸡3只1元。如何用100元买100只鸡。其中公鸡,母鸡,小鸡的数量各是多少?
Demo1:

for x in range(0,21):  #公鸡最多买20只
    for y in range(0,34):  #母鸡最多买33只
        z = 100 - x -y  #小鸡个数等于100只-公鸡与母鸡的个数
        if (5*x + 3*y + z/3)==100:  #如果共计100元
            print("公鸡{}只,母鸡{}只,小鸡{}只".format(x,y,z))

8个教师随机分到3个教室
Demo2:

import random  #调用random函数包
teachers = ['A','B','C','D','E','F','G','H']
offices = ['101教室','102教室','103教室']
d = {}
for i in range(3):  #i=0,1,2
    d[i] = []  #分配三个办公室
for t in teachers:
    d[random.randint(0,2)].append(t)  #随机选一个办公室将8个老师依次添加进去
    #randint函数来自于random函数包
    #randint(a,b)随机产生a-b之间的整数,包括a和b。
for k,v in d.items():  
    print("{}有老师:{}".format(offices[k],v))  #第k个办公室有v位老师
'''print(d[0])
print(d[1])
print(d[2])'''

输入三个数字,判断是否构成三角形?如果构成三角形,则计算该三角形的面积。
Demo3:

import math  #调用math函数包
nums = input("请输入构成三角形的3个数字,以空格分隔:")   #input用于输入字符,空格分隔,回车结束,并存放与列表nums中
nums = [float(x) for x in nums.split(" ")]  #用空格切片,并将输入的字符依次转化为浮点型参与运算
if nums[0] + nums[1] > nums[2] and nums[1] + nums[2] > nums[0] and nums[0] + nums[2] > nums[1]:  #判断条件:任意两边之和大于第三边
    s = sum(nums) / 2  #海伦公式根据边长求面积S=√p(p-a)(p-b)(p-c)
    area=math.sqrt(s*(s - nums[0])*(s - nums[1])*(s - nums[2]))  
    print("{}, {}, {}能构成三角形,面积为:{}".format(*nums,area))  
else:
    print("{}, {}, {}不能构成三角形".format(*nums))

编写函数并调用:采用冒泡排序方法对列表[ 4, 7, 6, 8, 2]进行从小到大排序处理
Demo4:

def bubble_sort(lst):
    lst_len = len(lst)  #获取数组长度
    for i in range(1,lst_len-1):  #外层共遍历 
        for j in range(0,lst_len-i):
            if lst[j]>lst[j+1]:  #如果前一个比后一个大
                lst[j],lst[j+1]=lst[j+1],lst[j]  #交换位置,从小到大排列
            #if lst[j] 


编写函数并调用:采用直接排序方法对列表[ 4, 7, 6, 8, 2]进行从小到大排序处理
Demo5:

def direct_sort(lst):  #直接排序
    lst_len = len(lst)
    for i in range(lst_len-1):
        for j in range(i+1,lst_len):  
            if lst[i]>lst[j]:
                lst[i],lst[j]=lst[j],lst[i]
lst1=[4, 7, 6, 8, 2]
print(lst1)
direct_sort(lst1)
print(lst1)

编写函数并调用:采用快速排序方法对列表[ 4, 7, 6, 8, 2]进行从小到大排序处理
Demo6:

def fast_sort(lst):  #快速排序
    if len(lst)<2:
        return lst
    mid=lst[len(lst)//2]
    left_lst,right_lst=[],[]
    lst.remove(mid)
    for e in lst:
        if e>=mid:
            right_lst.append(e)
        else:
            left_lst.append(e)
    return fast_sort(left_lst)+[mid]+fast_sort(right_lst)
lst1=[4, 7, 6, 8, 2]
print(lst1)
lst1=fast_sort(lst1)
print(lst1)

编写函数并调用:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,一年内的兔子总数为多少?
Demo7:

def rabbit(month):
    if month<=2:
        return 1
    return rabbit(month-2)+rabbit(month-1)
print(rabbit(12))

编写程序求一个数的阶乘
Demo8:

def factorial(n):
    if n==1:
        return 1
    else:
        return n*factorial(n-1)
print(factorial(5))

编写程序:一球从300米高度自由落下,每次落地后反跳回原高度的二分之一,再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
Demo9:

height=300
count=10
s=0
while count>0:
    s+=height
    count-=1
    height/=2
    s+=height
print(s-height)
print(height)


""" height=300
count=10
lst=[]
lst.append(height)
for i in range(1,10):
    height/=2
    lst.append(height)
    lst.append(height)
print(sum(lst))
print(height/2) """

输出打印九九乘法表
Demo10:

for i in range(1,10):
    for j in range(1,i+1):
        print("{}×{}={:2d}".format(j,i,i*j),end="  ")
        if i == j:
            print("")

编写函数并调用:求100以内的质数
Demo11:

lst=[]
for i in range(2,101):
    for j in range(2,i):
        if i%j==0:
            break
    else:
        lst.append(i)
print(lst)

若一个3位数,每一个数字的3次幂之和都等于它本身,则这个三位数被称为水仙花数。例如:153是水仙花数,各位数字的立方和为:13+53+33=153,编程求出所有的水仙花数
Demo12:

'''for n in range(100,1000):
    n_str=str(n)
    if n==int(n_str[0])**3+int(n_str[1])**3+int(n_str[2])**3:
        print("水仙花数:",n)'''
        
        
for n in range(100,1000):
    n1=n//100
    n2=(n%100)//10
    n3=n%10
    if n==n1**3+n2**3+n3**3:
        print("水仙花数:", n)

只能由1和它本身整除的整数称为素数;若一个素数从左向右读与从右向左读是相同的数,则该素数为回文素数。编程求出2-1000内的所有回文素数
Demo13:

for n in range(2,1001):
    for i in range(2,n):
        if n%i==0:
            break
    else:
        n_str=str(n)
        if n_str==n_str[::-1]:
            print("回文素数:",n)

美国NBA球员Lin的前10场得分资料如下:
24,19,14,23,32,19,28,19,22,11,请使用匿名函数和filter()函数,列出得分超过20分(含)的列表
Demo14:

lst=[24,19,14,23,32,19,28,19,22,11]
lst2=[x for x in filter(lambda x:x>=20,lst)]
print(lst2)

输入某年某月某日,判断这一天是这一年的第几天
Demo15:

dat = input("请输入年月日(以空格间隔):")
year,month,day=dat.split(" ")  #将输入的字符串切片,分别送给year,month,day三个变量
year,month,day=int(year),int(month),int(day)  #将三个变量转换为整型
months = (0,31,59,90,120,151,181,212,243,273,304,334)
#一年共有365天(1月~12月分别为31天、28天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天)
if 1 <= month <= 12:  #月份规定为1-12之间的数
    sum = months[month - 1]  #月份索引从0开始,要-1
else:
    print("月份输入错误!")
sum += day  #求累计天数,如输入1月1日,则sum = month[0] + day = 0 + 1 = 1,即1月1日为该月份第1天
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):  #判断是否为闰年
    '''
    1582年以来的置闰规则:
    普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
    世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
    1582年以前的惯例:四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;
    如果公元前B年的B(正数)除以4余1,那么它也是闰年。
    '''
    leap = 1 
if (leap == 1) and (month > 2):  #如果是闰年的话,且输入的月份在2月份之后要多加上一天
    sum += 1  #闰年(1月~12月分别为31天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天)
print("{}年{}月{}日是一年中的第{}天".format(year,month,day,sum))

Demo16:

for i in range(1,10):
    for j in range(1,i+1):
        print("{}×{}={:2d}".format(j,i,i*j),end="  ")
        if i == j:
            print("")

生成一个任意长度的随机密码
Demo17:

import random
x=int(input("请输入生成随机密码的长度:"))
print(''.join([random.choice('QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm!@#$%^&*()_+=}{[]:;<,.>?/1234567890') for i in range(x)]))

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
Demo18:

total=0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if ((i!=j)and(j!=k)and(k!=i)):
                print(i,j,k,end="n")
                total+=1
print("共计:",total,"个")

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
Demo19:

#一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
def factor(num):  #定义一个函数
    target=int(num)
    res=set()
    for i in range(1,num):
        if num%i==0:     #通过遍历求余数的方法找出所有因子
            res.add(i)   #将得到的因子存入res集合
    return res

for i in range(2,1001):  
    if i==sum(factor(i)):  #从2到1000之间进行遍历,当i等于i的所有因子之和时,打印出结果
        print("完数:",i)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号