m0_62909636
2021-12-29 11:54
采纳率: 95.5%
浏览 32
已结题

python 跨境电商求相同国家不同运输路线进行运费比较的方法

问题遇到的现象和发生背景

我是做跨境电商的,为了方便比较相同国家3个不同路线的运费高低,我做了3个计算程序,实现了把跨境平台提供的excel价格表导入python,输入重量和国家就可以计算单个路线运费,但是不知道怎么把这三个程序中相同国家运费进行比较,求帮忙提供个解决方法。

img

img

img

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,'无')}")

我想要达到的结果

我想实现:输入西班牙 程序就输出这三个路线西班牙的运费,由低到高排列
当然,有的国家某个路线不支持,程序自动忽略该路线。

2条回答 默认 最新

相关推荐 更多相似问题