Python学习——练习3

目录

1、拿硬币

2、孪生数

3、列表最大值、最小值、平均值、求和

4、列表去重

5、列表合并

6、 使用列表判断一个列表是否在另外一个列表中

7、列表的反转、 列表的排序

8、如何将0-10随机存入列表中

9、完成一个登录注册案例(要求使用容器保存数据)

10、使用控制台,完成购买英雄的界面


1、拿硬币

有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币

coins = int(input('请输入一堆硬币的个数:'))
if coins % 2 == 0:
    print(f'最少{coins/2:.0f}次可以拿完硬币')
else:
    print(f'最少{coins/2 + 1:.0f}次可以拿完硬币')

2、孪生数

如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"

print('0到100以内的孪生数对有:')
m = 2
for num in range(3,100,2):
    for i in range(2,num//2 + 1):
        if num % i == 0:
            break
    else:
        if num - m == 2:
            print(f'({m},{num})')
        m = num


3、列表最大值、最小值、平均值、求和

给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

n = int(input('请您输入您想输入的数字个数:'))
ls = []
for i in range(1,n+1):
    num = float(input(f'请输入第{i}个数:'))
    ls.append(num)
print(f'您输入的数字有:{ls}')

ma = ls[0]
mi = ls[0]
su = 0
for i in ls:
    su = su + i
    if i > ma:
        ma = i
    elif i < mi:
        mi = i
print(f'这些数的最大值为:{ma}')
print(f'这些数的最小值为:{mi}')
print(f'这些数的和为:{su}')
print(f'这些数的平均值为:{su/n}')


4、列表去重

将list中的重复数据去重,至少使用两种方案

ls = [1,2,3,3,4,1,5,2,6]
print(f'原列表为:{ls}')

# 方案一:set
ls = list(set(ls))
print(f'方案一去重后的列表为:{ls}')

# 方案二:遍历循环
ls1 = []
for n in ls:
    if n not in ls1:
        ls1.append(n)
ls = ls1
print(f'方案二去重后的列表为:{ls}')


5、列表合并

两个列表进行合并操作

ls1 = [1,2,3]
ls2 = [4,5,6]
print(f'ls1:{ls1}')
print(f'ls2:{ls2}')

ls1.extend(ls2)
print(f'将ls2合并到ls1中:{ls1}')
ls1 = [1,2,3]
ls2.extend(ls1)
print(f'将ls1合并到ls2中:{ls2}')


6、 使用列表判断一个列表是否在另外一个列表中

print('下面要判断列表1是否在列表2中')
n1 = int(input('请输入列表1包含的元素个数:'))
ls1 = []
for i in range(1,n1+1):
    elem = input(f'请输入列表1的第{i}个元素:')
    ls1.append(elem)
n2 = int(input('请输入列表2包含的元素个数:'))
ls2 = []
for i in range(1,n2+1):
    elem = input(f'请输入列表2的第{i}个元素:')
    ls2.append(elem)
print(f'您输入的列表1是:{ls1}')
print(f'您输入的列表2是:{ls2}')

flag = 1
if len(ls1) > len(ls2):
    print('列表1不在列表2中')
else:
    for i in ls1:
        if i not in ls2:
            flag = 0
            break
if flag == 1:
    print('列表1在列表2中')
else:
    print('列表1不在列表2中')


7、列表的反转、 列表的排序

ls = [1,3,5,2,4,6]
print(f'ls:{ls}')

ls.reverse()
print(f'ls的反转:{ls}')

ls = [1,3,5,2,4,6]
ls.sort()
print(f'ls的排序:{ls}')


8、如何将0-10随机存入列表中

import random
ls = []
while True:
    i = random.randint(0,10)
    if i not in ls:
        ls.append(i)
    if len(ls) == 11:
        break
print(f'ls = {ls}')


9、完成一个登录注册案例(要求使用容器保存数据)

data = {}
login_flag = 0
while True:
# 登录注册界面
    infor = int(input('请输入您要进行的操作(1.注册 2.登录 3.退出):'))

# 用户注册
    if infor == 1:
        username = input('注册-请创建用户名:')
        password = input('注册-请创建密码:')
        insure = input('注册-确认密码:')
        if insure == password:
            data[username] = password
            print('注册成功!')
        else:
            print('密码确认有误!请重新输入')

# 用户登录
    elif infor == 2:
        username = input('登录-请输入用户名:')
        if username in data:
            password = input('登录-请输入密码:')
            for key in data:
                if data[key] == password:
                    print('登录成功!')
                    break
            else:
                print('密码错误!')
        else:
            print('该用户名不存在!')

# 退出
    elif infor == 3:
        break

10、使用控制台,完成购买英雄的界面

data = {}
while True:
    login_flag = 0
# 1.英雄商城登录界面
    print('\n\t\t   英雄联盟商城登录界面\n')
    print('~*'*28+'~\n')
    print('\t'*3+'1. 用户登录'+'\t'*3+'\n')
    print('\t'*3+'2. 新用户注册'+'\t'*3+'\n')
    print('\t'*3+'3. 退出系统'+'\t'*3+'\n')
    print('~*'*28+'~')
    infor1 = int(input('(温馨提示)请输入您的选项:'))

    # 用户注册
    if infor1 == 2:
        username = input('注册-请创建用户名:')
        password = input('注册-请创建密码:')
        insure = input('注册-确认密码:')
        if insure == password:
            data[username] = password
            input('注册成功!(回车继续)')
        else:
            input('密码确认有误!(回车继续)')

    # 用户登录
    elif infor1 == 1:
        username = input('登录-请输入用户名:')
        if username in data:
            password = input('登录-请输入密码:')
            for key in data:
                if data[key] == password:
                    input('登录成功!(回车继续)')
                    login_flag = 1
                    break
            else:
                input('密码错误!(回车继续)')
        else:
            input('该用户名不存在!(回车继续)')
    # 退出系统
    elif infor1 == 3:
        break

# 2.英雄商城首页
    if login_flag == 1:
        while True:
            print('\n\n\t\t       英雄联盟商城首页\n')
            print('~*'*28+'~\n')
            print('\t'*3+'1. 进入英雄超市'+'\t'*3+'\n')
            print('\t'*3+'2. 休闲小游戏'+'\t'*3+'\n')
            print('\t'*3+'3. 退出登录'+'\t'*3+'\n')
            print('~*'*28+'~')
            infor2 = int(input('(温馨提示)请输入您的选项:'))
            if infor2 == 2:
                input('该功能暂未开放!(回车继续)')
            elif infor2 == 3:
                break
            elif infor2 == 1:

# 3.英雄商城英雄列表
                while True:
                    print('\n\n\t\t       英雄商城英雄列表\n')
                    print('~*'*28+'~\n')
                    print('编号  姓名     昵称     价格  库存  描述\n')
                    print('1     李青     盲僧     3000  100   一人之行可灭世,众人之勤可救世!\n')
                    print('2     锐雯   放逐之刃   4000    0   她是残忍高效的战士\n')
                    print('3     薇恩   暗夜猎手   3500    0   这个世界不想人们想象的那么美好\n')
                    print('4     扎克   生化魔人   3000    0   即使你没有脊柱,你也必须站起来\n')
                    print('5     杰斯  未来守护者  2500    0   武装着睿智与魅力,你的选择没有错\n')
                    print('~*'*28+'~')
                    infor3 = input('(温馨提示-按任意键返回上一级菜单)请输入您要购买的英雄编号:')
                    if infor3 == '2' or infor3 == '3' or infor3 == '4' or infor3 == '5':
                        input('抱歉,该英雄暂无库存!(回车继续)')
                    
                    elif infor3 == '1':
                    
# 4.英雄详情购买页面
                        while True:
                            print('\n\n\t\t\t\t英雄商城购买英雄\n')
                            print('英雄购买票据')
                            print('~*'*38+'~')
                            print()
                            print('\t英雄名称:盲僧(史诗)')
                            print('\t英雄属性:生命值428(+85)/能量值200(+0)/移动速度425/攻击力55.8(+3.2)\n\t\t  攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125')
                            print()
                            print('\t英雄座右铭:一人之行可灭世,众人之勤可救世!')
                            print('\t英雄价格:3000')
                            print('\t活动折扣;9.5')
                            print()
                            print('插播广告:当风云变色,当流离失所,世界不再是旧日模样\n'+'你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡\n')
                            print('~*'*38+'~')

                            n = int(input(f'折后商品价格为 {3000*9.5} 元,请输入购买数量:'))
                            money = float(input(f'(温馨提示)您将购买 {n} 个商品,共计 {3000*9.5*n} 元,请付款:'))
                    
                            if money < 3000*9.5*n:
                                input('余额不足,请重新付款!(回车继续)')
                            else:
                                input('付款成功!下面是您的购买小票(回车继续):')
                                
# 5.订单页面:打印小票
                                print('\n\n\t\t\t\t英雄商城购买英雄\n')
                                print('英雄购买票据')
                                print('~*'*38+'~')
                                print()
                                print('\t英雄名称:盲僧(史诗)')
                                print('\t英雄价格:3000')
                                print('\t活动折扣;9.5')
                                print(f'\t购买数量:{n}')
                                print()
                                print(f'\t应付付款:{3000*9.5*n}')
                                print(f'\t实际付款:{money}')
                                print(f'\t找零:{money - 3000*9.5*n}')
                                print()
                                print('插播广告:当风云变色,当流离失所,世界不再是旧日模样\n'+'你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡\n')
                                print('~*'*38+'~')
                                input('(温馨提示)按任意键返回上一级菜单:')
                                break
                    else:
                        break
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俗人不俗鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值