Python总复习-习题集(2023-1-11)

题一:冒泡排序

冒泡排序:是一种计算机科学领域的较简单的排序算法
	它重复地走访过要排序的元素列 因此比较两个相邻的元素 如果顺序错误就把它们交换过来 走访元素的工作就是重复的进行直到没有相邻元素需要交换 也就是说该元素已经排序完成
	这个算法的名字由来就是因为越小的元素经由交换慢慢浮到数列的顶端 (书序或降序) 就如同气泡一样称为冒泡排序
	
		例如:使用冒泡排序对列表:
		[3,1,3,4,5,6,76,4,3,7]进行排序
		
		条件:输出每次的步骤
			输出最终的结果
			
			from time import sleep

# 1.目标列表
tl=[3,1,4,5,9,7,2,7]
print("变换之前:",tl)

print("=================================================")
# 我们要操作列表  将列表上的值做调动 不是操作中的元素

# 先正序排列输出
for i in range(0,len(tl)):
    for j in range(0,len(tl)-i-1):
        # 使用循环一个一个冒泡 然后对比之后就交换数字位置
        if tl[j] >tl[j+1]:
            temp=tl[j+1]
            tl[j+1]=tl[j]
            tl[j]=temp
            print("冒泡排序后",tl)


# 倒序输出
print("倒序排列")

	
    
 升级版:封装成为函数



		import random
from time import sleep



# 封装为函数
def mp(tl):
    for i in range(0,len(tl)):
        for j in range(0,len(tl)-i-1):
            # 使用循环一个一个冒泡 然后对比之后就交换数字位置
            if tl[j] >tl[j+1]:
                temp=tl[j+1]
                tl[j+1]=tl[j]
                tl[j]=temp
                print("冒泡排序后",tl)



# 开始传入参数
while True:
    ins=input("请输入列表中整数的个数")
    if ins.isdigit():
        number=int(ins)
        tl=[random.randint(1,10000) for _ in range(number)]
        mp(tl)
    else:
        print("输入的数据异常请重新输入")

题二:123报数游戏

 题目:n个稀有围城一个圈 然后循环做123报数 1 2 3 1 2 3 1 2 3...每次报到3的小朋友退出
 当人数减少到1个的时候 游戏结束
 求最后一个小朋友原来是第几位
 
 	条件:
 	   1.n个小朋友 则题目的顺序就是从1到n
 	   2.循环报数123 报数3的退出
 	   3.每次循环到队尾 自动的接到队伍的第一位上
 	   4.当队伍中的小朋友只有一个的时 游戏结束
 	   
 	   例如:1 2 3->2退出
 	   	1 2 3 4 5 6 -->1退出
 	   	
 	   	
 	   	解:
 	   	
# 思路:循环条件:队列的长度为1的时候 停止计算程序
# 队列不为1 一直做循环处理
# 循环读取队列数据的同时 还得计数 1 2 3  结束的条件是队列
def calculate_last(que:list):
    num=0
    while len(que)>1:
        for i in que:
            num=num+1
            print("当前第{}号小朋友报数{}".format(i,num))
            print(num,i)
#             来一个判断 出现3就退出
            if num==3:
                que.remove(i)#调用移除函数
                print("---->",que)
                num=0
    else:
        print(que)




while True:
    ins=input("请输入玩游戏的人数(q退出)")
    if ins.isdigit():
        number=int(ins)
        que=[i+1 for i in range(number)]#使用队列生成式
        print(que)
        calculate_last(que)
    elif ins=='q':
        print("程序退出")
        break
    else:
        print("请重新输入")

题三:猜数字游戏

题:
	程序启动 随机生成一个结果值(范围0-30)  让用户输入数值去才 在有限次数内 猜中并结束游戏 猜不中 程序停止并输出结果
	
	
	条件:
	1.取值只能是030中的一个
	2.用户只能才5次 猜错后显示结束 并公布答案
	3.用户每次才数字 都显示结果
			a:数字大于结果值 输出你才高了
			b:数字小于结果值 输出你猜地低了
			
			当用户猜对了  输出你猜对了
			
			
	代码示例:
	
# 导入随机值库
import random
#生成随机数值
result=random.randint(0,30)#从0到30之间随机生成一个值

flag=False
# 让用户输入数值  强制转换为整型

for i in range(5):
    quess=int(input("请输入整数:"))
    print(i,quess)
#         判断一下
    if quess==result:
        print("恭喜你猜对了 答案是{}".format(result))
        flag=True
        break
    elif quess>result:
        print("猜高了")
    elif quess<result:
        print("猜少了")
    else:
        print("猜错了 继续吧~")



if flag:
    pass
else:
    print("猜错了  正确的结果是".format(result))
print("程序结束")



# 练习点:format的使用  判断语句 循环语句


题四:猜数字升级版


# 条件:猜三位数
# 练习点:字符串 数字  函数




# 1.导入随机数库
import random

# 2.生成随机数
result=random.randint(100,999)#生成三位数


# 3.检测数值
def check_quess(result:int,quess:int):
    result=str(result)
    num=str(quess)
    a=0
    b=0
    for i in range(num):
        if result[i]==quess[i]:
            a=a+1
        else:
            b=b+1
    if a==num:
        print("关系你猜对了")
        return True
    else:
        return  False
print("检测完毕")






# 循环猜数
print("随机数已经生成 游戏开始")
while True:
    quess=input("第{}次猜的数值是 (q退出)")
    if quess=='q':
        print("游戏结束")
        break
    elif quess.isdigit():
        if len(quess)==len(result):
            status=check_quess(result,int(quess))
            if status:
                print("恭喜你猜对了{}".format(result))

        pass
    else:
        print("请仔细看看 好好选选")
print("随机数为{}".format(result))#使用format语句一定要使用{}占位符

题五:打印九九乘法表

题目:
1.完整打印九九乘法表 2.打印完整的逆九九乘法表  3.注意整体格式 用空格隔开
	
# 1.正乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print("{}*{}={}".format(j,i,i*j),end=' ')
    print(end='\n')


print("****************************************************************")
# 2.逆乘法表
for m in range(9,0,-1):#range()这里面有三个参数  1.开始  2.结尾  3.递增(递减)的梯度 读作从9开始递减一直减到0 每次减一
        for n in range(9,m-1,-1):
            print("{}*{}={}".format(n,m,n*m),end='')
        print(end='\n')


题六:递归买汽水问题

题目:一瓶汽水一块钱 两个空瓶或三个瓶盖 可以换一瓶汽水 请问:如果我有20块钱 可以喝几瓶汽水?
编程中有个非常经典的词叫做递归 就是函数调用函数自己

条件:一块钱可以买一瓶水
两个空瓶可以换一瓶汽水
三个瓶盖可以换一瓶汽水
必须使用函数递归


练习点:函数  递归 循环




# 函数递归 先定义一个函数
def get_drink(money,drink,bottle,cap):
    if money>0:
        tmp=money
        drink=drink+money
        bottle=bottle+money
        cap=cap+money
        money=0

        print("当前花了{}瓶子 剩下多少{}元 手中瓶子有{}个 瓶盖有{}个 ".format(tmp,money,bottle,cap))
    elif bottle>=2:
        tmp=bottle//2
        bottle=bottle%2
        bottle=bottle+tmp
        cap=cap+tmp
        drink=drink+tmp
        print("当前花了{}瓶子 剩下多少{}元 手中瓶子有{}个 瓶盖有{}个 ".format(tmp*2, tmp, money, cap))
    elif cap>=3:
        tmp=cap//3
        cap=cap%3
        cap=cap+tmp
        bottle=bottle+tmp
        drink=drink+tmp
        print("当前花了{}瓶子 剩下多少{}元 手中瓶子有{}个 瓶盖有{}个 ".format(tmp, money, bottle, cap))
    if bottle>=2 or cap>=3:
        get_drink(money,drink,bottle,cap)



money=20
drink=0
bottle=0
cap=0
get_drink(money,drink,cap,cap)

题七:鸡兔同笼问题

鸡兔同笼:
将鸡兔关在一个笼子里 已知头有xx个 脚有xx只 求有几只鸡和及只兔

条件:
输入头的数量
输入脚的数量
定义函数 负责计算
函数返回兔子和鸡的数量
要有基本的数据处理

练习点:多返回值函数 字符串 判断 循环




def calculate_animal_num(head:int,leg:int):
    #(leg-head*2)//2
    rabbit=(leg-head*2)//2
    chicken=head-rabbit
    # 计算完成后就返回
    return rabbit,chicken
    pass
while True:
    while True:
        print("鸡兔同笼程序")
        head_str=input("请输入头的数量")
        if head_str.isdigit():#这里判断1用户输入的数值符不符合标准
            head_num=int(head_str)
            break
        else:
            print("数据异常 请检查 然后重新1输入")
    while True:

            leg_str = input("请输入脚的数量")
            if leg_str.isdigit():  # 这里判断1用户输入的数值符不符合标准
                leg_num = int(leg_str)
                break
            else:
                print("数据异常 请检查 然后重新1输入")
    if head_num>leg_num:
        print("头比脚多")
    else:
        chicken,rabbit=calculate_animal_num(head_num,leg_num)
        print("{}个头{}条腿 答案是 {}兔子{}只鸡".format(head_num,leg_num,rabbit,chicken))

题八:录取率和录取线的计算


# 通过录取率来计算分数线
#   根据分数线 计算录取率  学生的超级和数量 都是通过函数 随机生成

# 条件:1,选择输入录取线或者录取率
#          2.随机生成学生的N个成绩
#           3.然后计算出录取率或者录取信息
# 相关知识点:字符串  函数 计算


# 1.导入随机库
import random


# 2.定义学生的N个随机成绩
def random_N_score():
    #    使用列表生成式
    score=[random.randint(200,750) for i in range(random.randint(3000,6000))]
    #注意一定要把最后的值返回
    return score
print(random_N_score())


def calculate_enroll_score(rate :int,score:list):
    all_number=len(score)
    enroll_number=int(round(all_number*rate/100))
    scores.sort(reverse=True)
    enroll_score=scores(enroll_number-1)
    return enroll_score





def calculate_enroll_rate(score:int,scores:list):

    all_number=len(score)
    enroll_scores=[i for i in scores if i>=score]
    enroll_number=len(enroll_scores)
    enroll_rate=round(enroll_number/all_number,2)
    return "{}%".format(int(enroll_rate*200))

    pass


while True:
    print("1.录取线  (200-750)  2.录取率(10-100)")
    print("示例 1 530")
    print("示例:2 40")
    ins=input("请输入")
    choice,number=ins.split(" ")
    number=int(number)
    if choice=='1':
        scores=random_N_score()
        enroll_raate=calculate_enroll_rate(number,scores)
        print("录取线 {} 本届开始人数{}个 求得录取率".format(number,len(scores),enroll_raate))
    elif choice=='2':
        scores=random_N_score()
        calculate_enroll_score(number,scores)
    else:
        print("数据识别异常")







题九:人物-地点-时间随机游戏

例如:小明  在 图书馆 吃饭
		小红在卫生间 打游戏
		
		
		条件:不属于10个角色
		   不少于8个地点
		   不少于8件事件
		   菜单控制 可以小红输出 和退出
		   
		   
# 导入 随机库
import random

#使用  pip install faker  库


# 准备数据
# users=['吴邪','张起灵','解雨臣','吴二白','王胖子','云彩','黎簇','二月红','张启山']
from faker import Faker

fake=Faker("zh_CN")

users=[fake.name() for i in range(20)]
# address=['吴山居','北京','长沙','杭州','西沙海底','长白雪山','新月饭店','峡谷']

address=[fake.street_address() for i in range(20)]
do_some_thing=['盗墓','吹牛逼','卖货','炸墓','吃鸡','听音乐','蹦迪']

# 循环


while True:
    choice=input("请输入")
    if choice=='1':
        text='{}    在  {} {}'
        user=random.choice(users)
        address=random.choice(address)
        thing=random.choice(do_some_thing)
        temp=text.format(user,address,thing)
        print(temp)
    elif choice=='q':
        print("程序停止运行")
    else:
        print("命令无法识别 请重新选择")


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值