Python 排序函数之“商品价格预算区间排序”

# 商品价格区间设置与排序


"""
介绍:
    用户根据提示,输入价格预算(输入两个数),并按照提示输入编号(0,1,2)排列呈现商品价格,或返回。

知识点:
    1、创建列表、遍历列表
    2、使用排列函数:xxx.sort(), xxx.reverse(), sorted(xxx), (xxx是可以替换的变量)
    3、函数ord(),字符转换ASCII码
    4、用旗帜跳出两层循环
    5、循环语句:while、for
    6、跳转语句:continue、break
    7、条件语句:if、elif、else
    8、两数交换

不足(待改善):
    1、输入一个'空格'字符就是退出程序,不能输入多个'空格'字符,否者会因为分割函数而导致报错
    2、不能输入’回车‘字符,否侧会因为分割函数而导致报错(尝试改善无果)
    3、不能只输入一个数字,否则会因为分割函数而导致报错
    4、如果输入不在商品价格范围内的数,会打印NUL,不显示也没有提示,可以加以改正
"""


flag_ord = 0    # 跳出两层循环旗帜

while True:
    # 定义整数列表
    goods_data = [399, 4369, 539, 288, 109, 749, 235, 190, 99, 1000]
    # 打印整数列表
    print('以下是同一商品的所有价格:\n{}'.format(goods_data))
    # 带提示输入赋值
    num = input('请输入您的预算(最大和最小):')

    # 判断输入是否有字符输入(除空格外)
    for i in num:
        if ord(i) != 32 and ord(i) != 46 and (ord(i) < 48 or ord(i) > 57):
            print('请输入数字!!!')
            print(ord(i))
            # 跳出两层循环
            flag_ord = 1
            break

    # 截止本次循环,从下次循环开始
    if flag_ord == 1:
        flag_ord = 0
        continue

    # 输入'0'就退出程序
    if num == ' ':
        print('退出程序!!!')
        exit()

    # 分割成两个整数
    num = num.split()
    num_min = float(num[0])
    num_max = float(num[1])

    # 交换两数
    if num_min >= num_max:
        num_min = num_max + num_min
        num_max = num_min - num_max
        num_min = num_min - num_max

    # 输入负数打印提示
    elif num_min < 0:
        print('请输入正整数!!!')
        continue

    # 调试程序
    # print(num_min)
    # print(num_max)

    while True:
        # 带提示输入赋值
        num = input('请选择排列类型: \n\t 1、降序 \n\t 2、升序 \n\t 0、返回 \n请选择编号:')

        # 逆序排列
        if num == '1':
            # 把商品价格逆序排列赋值
            goods_price = sorted(goods_data, reverse=True)
            # print(goods_price)

            # 打印预算范围内价格,并逆序排列
            print('商品价格降序排列:', end='')
            for i in goods_price:
                if float(i) <= num_max and float(i) >= num_min:
                    print(i, end=' ')
        # 顺序排列
        elif num == '2':
            # 把商品价格顺序排列赋值
            goods_price = sorted(goods_data)
            # print(goods_price)

            # 打印预算范围内价格,并顺序排列
            print('商品价格升序排列:', end='')
            for i in goods_price:
                if float(i) >= num_min and float(i) <= num_max:
                    print(i, end=' ')

        # 返回上一级
        elif num == '0':
            break

        # 提示输入有误
        else:
            print('输入有误!!!')
            continue

        print()     # 换行

运行结果:

创作日期:2022/5/9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值