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