99网
您的当前位置:首页Pokeman.csv 处理(Python)

Pokeman.csv 处理(Python)

来源:99网

Pokeman.csv 处理(Python)

python 的初学者可以拿来做练习

需求做出:

思路:

  1. 先打开所而的文文件,open_csv函数,而把所有数据存到data这个数组中并返回函数
  2. 为了方便之后的数据处理,我把五维总值和攻防差都增加到data的最后。
  3. 最后是冒泡排序的部分,因为2和3的要求都是冒泡排序,所以我直接创了一个冒泡排序的函数,只需要按照他的要求则可。

总代码如下:

#分别输出 五维总值 (攻击+防御+魔攻+魔防+速度)、攻防差值(攻击-防御)最大的精灵的信息
#◼ 实现冒泡排序算法,分别按 攻击力、魔法攻击力、速度对精
#灵进行降序排序,并各输出前5个精灵的所有属性值
#◼ 实现冒泡排序算法,分别按五维总值、攻防差值 对精灵进行
#降序排序,并各输出前5个精灵的所有属性值

import csv
#打開CSV文件
def open_csv(filname):
    with open(filname) as f:
        data = []
        read = csv.reader(f)
        for row in read:
            data.append(row)
        return data

#五維總值的加總
def five_sum(data):
    fivesum = ["五維總值"]
    for i in range(1,len(data)):
        sum = int(data[i][5]) + int(data[i][6])+ int(data[i][7]) + int(data[i][8]) + int(data[i][9])
        fivesum.append(sum)
    return fivesum

#攻防差值
def ad_value(data):
    advalue = ["攻防差"]
    for i in range(1,len(data)):
        sum = abs(int(data[i][5])-int(data[i][6]))
        advalue.append(sum)
    return advalue

#降序冒泡排序 , data 則為我們的data 數據,test則為要用那一行去冒泡排序
def bubble_sort(data,test):

    #先把要做排序的值輸入到test_value list
    test_value = []
    for i in range(len(data)):
        test_value.append(data[i][test])

    #冒泡排序
    # 遍历所有数组元素
    for i in range(len(data)):
        for j in range(1, len(data) - i - 1):
            if int(test_value[j]) < int(test_value[j+1]):
                test_value[j],test_value[j+1] = test_value[j+1],test_value[j]
                data[j],data[j+1] = data[j+1],data[j]

    #輸出結果
    print("以%s值做降序冒泡排序"%(data[0][test]))
    #輸出頭五個 ,range(6)是因為data[0]是标記
    for i in range(6):
        print(data[i])
    print(' ')


def main():
    txt = 'pokeman.csv'
    data = open_csv(txt)

    #附加五維總值
    #五維總值(攻击+防御+魔攻+魔防+速度)
    fivesum = five_sum(data) #five_sum 為函數
    #导入到data中
    for i in range(len(data)):
        data[i].append(fivesum[i])
        print('%s 的五維總值為 %s' % (data[i][1], data[i][12]))
    print(" ")

    #付加攻防差值
    #攻防差值計算(攻击-防御)
    advalue = ad_value(data) #ad_value 為函數
    #导入到data中
    for i in range(len(data)):
        data[i].append(advalue[i])
        print('%s 的攻防差為 %s'%(data[i][1],data[i][13]))
    print(" ")

    #冒泡排序
    for i in range(5):
        i = i + 5
        bubble_sort(data,i) #bubble_sort為函

    bubble_sort(data,12)
    bubble_sort(data,13)

main()

因篇幅问题不能全部显示,请点此查看更多更全内容