问题遇到的现象和发生背景
我是做跨境电商的,为了方便比较相同国家3个不同路线的运费高低,我做了3个计算程序,实现了把跨境平台提供的excel价格表导入python,输入重量和国家就可以计算单个路线运费,但是不知道怎么把这三个程序中相同国家运费进行比较,求帮忙提供个解决方法。
import openpyxl # openpyxl引入模块
# 读取 excel文件
def read_to_excel(path, sheet2):
workbook = openpyxl.load_workbook(path)# 实例化一个workbook对象
data2 = workbook[sheet2] # 获取excel文件内的那一个sheet2
return_data2 = []# 定义个要输出的总数组
# data2.rows 为表格内的每一行数据
for index2, row2 in enumerate(data2.rows):# 循环获取表格内的每一行数据
if index2 < 10: # 判断index1为该行跳出本次循环忽略本次数据 就不会再添加了
continue
elif index2 > 12:
break
return_row2 = []# 定义一个空的数组用来存放每一行数据单元格的数据
for col_index2, col_value2 in enumerate(row2):
return_row2.append(col_value2.value)# 获取单元格数据 追加到return_row2
return_data2.append(return_row2)# 把遍历出来的每一行数据数据return_row 追加到总数组 return_data2中 然后输出
return return_data2
if __name__ == '__main__':
path = r'D:\我的python代码\速卖通运费.xlsx'# path 访问文件的路径
sheet2 = '菜鸟专线经济'# Excel 中sheet2 的名字
# 打印read_to_excel方法
read_to_excel = read_to_excel(path, sheet2)#实例化获取的列表
#print(read_to_excel)
#以下代码根据输入重量计算运费
kg_freight = [i[3] for i in read_to_excel]#从列表中获取各国公斤运费
#print(kg_freight)
service_charge = [i[4] for i in read_to_excel]#从列表中获取各国包裹服务费
country = [i[2] for i in read_to_excel] #从列表中获取各个国家
while 2:
try:
goods_weight = int(input("请输入货物重量(g):"))
#print(type(goods_weight ))
if goods_weight > 2000:
print("超出路线重量范围,请重新输入1-2000g:")
continue
elif 0 < goods_weight <= 2000: #计算101-2000g重量范围包裹的各个国家运费
all_contury_freight =[(x,"%.2f" %(y/1000*goods_weight+z))for x,y,z in zip(country,kg_freight,service_charge)]
break #若输入的是数字,则退出循环继续下面代码
except :
print('您输入的不是数字,请重新输入:')#如果输入的是非数字,执行except下面代码
continue
for res in all_contury_freight:
print("\033[7;37;40m{: <10} 菜鸟专线经济运费(元):{:}\033[0m".format(*res))
all_contury_freight = dict(all_contury_freight)#不把遍历的元组转变成字典,下面怎么也调用不了
print("单一国家运费查询:")
while True:
country_1 = input(">>>")
if country_1 == "q": #输入如q退出程序
break
elif country_1 != "":
print(f"{country_1}: 菜鸟专线经济(元){all_contury_freight.get(country_1,'无')}")
我想要达到的结果
我想实现:输入西班牙 程序就输出这三个路线西班牙的运费,由低到高排列
当然,有的国家某个路线不支持,程序自动忽略该路线。