Python自学的一个月(学习交流)

小白学python的一个月经历了什么

首先我在慕课里找到了个python教程基础部分这个是免费的

在这里花了1周多的时间
https://python123.io/index/courses/1521
接下来是两个方法的地方

https://www.liaoxuefeng.com/wiki/1016959663602400
https://www.runoob.com/python3/python3-tutorial.html
就在这三个地方学习

当时我基础部分还没学完 我朋友就来找我一起参加2020华为云软件赛
哈哈哈真是没有对比就没有伤害
菜鸡的我吧他实现了 但时间却用的太长了
和大家分享下题目 代码

题目

1.1 输入信息
输入为包含资金流水的文本文件,每一行代表一次资金交易记录,包含本端账号ID, 对端账号ID, 转账金额,用逗号隔开。
 本端账号ID和对端账号ID为一个32位的无符号整数
 转账金额为一个32位的无符号整数
 转账记录最多为28万条
 每个账号平均转账记录数< 10
 账号A给账号B最多转账一次
举例如下,其中第一行[1,2,100]表示ID为1的账户给ID为2的账户转账100元:
1,2,100
1,3,100
2,4,90
3,4,50
4,1,95
2,5,95
5,4,90
4,6,30
6,7,29
7,4,28
1.2 输出信息
输出信息为一个文件,包含如下信息:
 第一行输出:满足限制条件下的循环转账个数。
说明:数据集经过处理,会保证满足条件的循环转账个数小于300万。
 第二行开始:输出所有满足限制条件的循环转账路径详情。
输出循环转账路径要按照指定排序策略进行排序:每条循环转账中,ID(ID转为无符号整数后)最小的第一个输出;总体按照循环转账路径长度升序排序;同一级别的路径长度下循环转账账号ID序列,按照字典序(ID转为无符号整数后)升序排序。
举例如下:
4
1,2,4
1,3,4
4,6,7
1,2,5,4
1.3 限制条件
循环转账的路径长度最小为3(包含3)最大为7(包含7),例如账户A给账户B转账,账户B给账户A转账,循环转账的路径长度为2,不满足循环转账条件。

代码

import re
import time
with open('test_data.txt', 'r')as f:
    ls = []
    ls_one = []
    ls_two = []
    num_all = 0
    # 分为两个序列
    for line in f.readlines():
        ls_one += re.findall("(\d{0,32}),\d{0,32},\d{0,32}", line)
        ls_two += re.findall("\d{0,32},(\d{0,32}),\d{0,32}", line)
    s3 = []
    s33 = []
    addceb=[]
    s4 = []
    s5 = []
    s6 = []
    s7 = []
# 计算循环转账次数
ss=0
with open ('result.txt','w+')as f1:
    for i, j in enumerate(ls_one):
        c = ls_two[i]
        for lc,czz in enumerate(ls_one[i:], i):
            if czz == c:
                b = ls_two[lc]
                if j==b:
                    continue
                elif j != b:
                    for lj,js in enumerate(ls_one[lc:],lc):    #3
                        if js == b:
                            e = ls_two[lj]
                            if j == e:
                                num_all+=1
                                if c<b<e:
                                    addceb = c + ',' + b + ',' + e
                                    #print(addceb)
                                elif e<c<b:
                                    addceb = e + ',' + c + ',' + b
                                    print(addceb)
                                else:
                                    addceb = b + ',' + e + ',' + c
                                    #print(addceb)
                                s3.append(addceb)
                            elif j != e:
                                for hm,mc in enumerate(ls_one[lj:],lj):
                                    if mc == e:
                                        g = ls_two[hm]
                                        if j == g and c != e:
                                            #print(c, b, e, g)
                                            num_all += 1
                                            addceb = c + ',' + b + ',' + e +','+g
                                            s4.append(addceb)
                                        elif j!=g:
                                            for wt,ts in enumerate(ls_one[i:],i):#五次
                                                if ts == g:
                                                    h = ls_two[wt]
                                                    if j == h and c!=g:
                                                        num_all += 1
                                                        addceb = c + ',' + b + ',' + e+','+g+','+h
                                                        s5.append(addceb)
                                                        s5.sort(reverse=False)
                #6次
                                                    elif j!=h :
                                                        for ws,sh in enumerate(ls_one[wt:], wt):
                                                            if sh == h:
                                                                m = ls_two[ws]
                                                                if j == m and b!=h and c!=g:
                                                                    num_all += 1
                                                                    addceb = c + ',' + b + ',' + e + ',' + g + ',' + h+','+m
                                                                    s6.append(addceb)
                                                                    s6.sort(reverse=False)
                                                    #7次
                                                                elif j!=m:
                                                                     for xa,ax in enumerate(ls_one[ws:],ws):
                                                                         if ax == m:
                                                                             z = ls_two[xa]
                                                                             if j == z and c!=h:
                                                                                 num_all += 1
                                                                                 addceb = c + ',' + b + ',' + e + ',' + g + ',' + h + ',' + m+','+z
                                                                                 s7.append(addceb)
                                                                                 s7.sort(reverse=False)
                                                                             else:
                                                                                 continue
                                                                         else:
                                                                             continue
                                                                else:
                                                                    continue
                                                            else:continue
                                                    else:
                                                        continue
                                                else:
                                                    continue
                                        else:
                                            continue
                                    else:
                                        continue
                            else:
                                continue
                        else:
                            continue
                else:
                    continue
            else:
                continue
    s33=sorted(s3, key=lambda x: x[0])
    s33.extend(s4)
    s33.extend(s5)
    s33.extend(s6)
    s33.extend(s7)
    f1.write(str(num_all)+'\n')
    for s in s33:
        f1.write(s + '\n')

用标准库实现的后来才知道数据处理还可以用numpy库 ~~题目有给出但是由于我不会就没有用了。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值