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

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条回答 默认 最新

  • chuifengde 2021-12-29 14:34
    关注

    path = r'D:\我的python代码\速卖通运费.xlsx'# path 访问文件的路径
    sheet2 = '菜鸟专线经济'# Excel 中sheet2 的名字
    # 打印read_to_excel方法
    read_to_excel = read_to_excel(path, sheet2)#实例化获取的列表
    这个地方,可以读取你所有的sheet,然后合并到一个read_to_excel中

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 修改了问题 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀