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(以下是同一商品的所有价格:
{}.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(请选择排列类型: 
	 1、降序 
	 2、升序 
	 0、返回 
请选择编号:)

        # 逆序排列
        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

经验分享 程序员 微信小程序 职场和发展