小编New*_*bie的帖子

Python排序txt文件的内容

我有一个函数打开一个名为"table1.txt"的文件,并将逗号分隔值输出为某种格式.

我的功能是:

def sort_and_format():

    contents = []
    with open('table1.txt', 'r+') as f:
        for line in f:
            contents.append(line.split(','))

    max_name_length = max([len(line[0]) for line in contents])

    print("     Team                       Points  Diff  Goals     \n")
    print("--------------------------------------------------------------------------\n")
    for i, line in enumerate(contents):
        line = [el.replace('\n', '') for el in line]
        print("{i:3}  {0:{fill_width}}   {1:3}   {x:3}   {2:3} :{3:3}".format(i=i+1, *line,
        x = (int(line[2])- int(line[3])), fill_width=max_name_length))
Run Code Online (Sandbox Code Playgroud)

我想出了如何正确格式化,以便"table1.txt文件:

FC Ingolstadt 04, 13, 4, 6
Hamburg, 9, 8, 10
SV Darmstadt 98, 9, 8, 9
Mainz, 9, 6, 9
FC Augsburg, 4, …
Run Code Online (Sandbox Code Playgroud)

python sorting python-3.x python-3.5

5
推荐指数
1
解决办法
512
查看次数

带有交换计数的 Python 冒泡排序列表

我正在尝试创建一个函数,该函数使用冒泡排序对列表进行排序,并返回一个包含交换和比较次数的元组。这样:

print(perform_bubble_sort([3, 5, 7]))    
>>> (3, 0)
Run Code Online (Sandbox Code Playgroud)

.
我尝试使用以下代码,但由于某种原因它没有返回正确的比较次数。

def perform_bubble_sort(blist):
    cmpcount, swapcount = 0, 0
    while True:
        swapped = False
        for i in range(1, len(blist)):
            cmpcount += 1
            if blist[i-1] > blist[i]:
                swapcount += 1
                blist[i-1], blist[i] = blist[i], blist[i-1]
                swapped = True
        if not swapped:
            break
    return cmpcount, swapcount
Run Code Online (Sandbox Code Playgroud)

python sorting

4
推荐指数
1
解决办法
6902
查看次数

Python链接列表追加

我为一个UnorderedList()类创建了一个append方法,它在我的IDLE窗口中工作正常但是当它被分配给大学的测试时:

my_list = UnorderedList()
my_list.append(13)
for num in my_list: 
    print(num, end=" ")
print()    
Run Code Online (Sandbox Code Playgroud)

它返回一个错误:AttributeError: Nonetype object has no attribute 'getNext'.

这是append方法:

def append(self,item):
    current = self.head
    while current.getNext() != None:
        current = current.getNext()
    current.setNext(Node(item))
Run Code Online (Sandbox Code Playgroud)

这是我的其他类和代码:

class Node:
    def __init__(self,initdata):
        self.data = initdata
        self.next = None

    def getData(self):
        return self.data

    def getNext(self):
        return self.next

    def setData(self,newdata):
        self.data = newdata

    def setNext(self,newnext):
        self.next = newnext

class UnorderedList:

    def __init__(self):
        self.head = None
        self.count = 0

    def append(self,item):
        current = self.head …
Run Code Online (Sandbox Code Playgroud)

python linked-list append

2
推荐指数
1
解决办法
1万
查看次数

带有节点的Python链接列表。可迭代的

我需要__iter__()为我的UnorderedList()课堂写一个方法的帮助。我尝试了这个:

def __iter__(self):
    current = self
    while current != None:
        yield current
Run Code Online (Sandbox Code Playgroud)

但是while循环不会停止。这是我其余的课程和代码:

class Node:
    def __init__(self,initdata):
        self.data = initdata
        self.next = None

    def getData(self):
        return self.data

    def getNext(self):
        return self.next

    def setData(self,newdata):
        self.data = newdata

    def setNext(self,newnext):
        self.next = newnext

class UnorderedList:

    def __init__(self):
        self.head = None
        self.count = 0
Run Code Online (Sandbox Code Playgroud)

python linked-list listiterator

2
推荐指数
1
解决办法
3453
查看次数

将CSV输入文件打印到列/行表中

我正在尝试编写一个程序(除其他外),将输入文件('table1.txt')打印为以下所示格式。

在此处输入图片说明

其中diff是每行第三和第四值之间的差。

我想我已经弄清了基本思路,然后尝试做:

f = open("table1.txt",'r')

for aline in f:
    values = aline.split(',')
    print('Team:',values[0],', Points:',values[1],', Diff:',values[2]-values[3],'Goals:',values[2]) 

f.close()
Run Code Online (Sandbox Code Playgroud)

但这会导致操作数类型错误。我想我只需要更改对文件中的项目进行迭代的方式,但是我不知道如何做。

python csv

1
推荐指数
1
解决办法
1万
查看次数