# 商品价格区间设置与排序
"""
介绍:
用户根据提示,输入价格预算(输入两个数),并按照提示输入编号(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